2017-11-17 11 views
0

변수를 전달하여 특정 합금 UI 요소 을 타겟팅 할 수 있습니까? 그래서 같은 변수를 전달하고 싶습니다 :Appcelerator Alloy로 UI 요소를 동적으로 타겟팅하고 있습니까?

controller.js

var flag = "se"; 
changeBackground(flag); //should change the background color of ImagView of the se flag 


function changeBackground(elementToChange){ 
    elementToChange.backgroundColor = "red"; //does not work 
    $. + elementToChange + backgroundColor = "red"; //does not work 
} 

view.xml

<View id="flagRow" layout="horizontal" backgroundColor="blue" height="Ti.UI.SIZE"> 
    <ImageView id="se" height="20dp" left="5dp" image="/images/flags/se.png" onClick="downloadPastLanguageLevels"/> 
    <ImageView id="de" height="20dp" left="10dp" image="/images/flags/de.png" onClick="downloadPastLanguageLevels"/> 
    <ImageView id="en" height="20dp" left="10dp" image="/images/flags/en.png" onClick="downloadPastLanguageLevels"/> 
      </View> 

오른쪽 지금은 $ .flagRow 통해 반복하고있다. 컨테이너하지만 플래그를 직접 설정하는 방법을 알고 싶습니다. 당신이 "를 myButton"이라는 요소가 있다면 $ .ID를 사용하여 컨트롤러에서보기에

var i, view; 
    for (i in $.flagRow.children) { 
      view = $.flagRow.children[i]; 
      if (view.id.indexOf(flag) > -1) { 
       view.backgroundColor = "red"; 
      } else { 
       view.backgroundColor = "transparent"; 
      } 
     } 
+0

XML에 특히 스타일을 넣는 것을 피할 필요가 있습니다. 기본값은 필요하지 않습니다. – jasonkneen

+0

예, 알고 있습니다. 항상 끝까지 물건을 넣는거야. 개발하는 동안 나는 종종 물건을 바꿀 필요가 있기 때문에 인라인이 더 쉽다는 것을 알게된다. – user24957

답변

2

당신 참조 요소는 그래서 당신은 $ .myButton로 참조한다. "element"라는 매개 변수를 기대하는 함수에 변수로 이름을 전달하는 경우 $ [element]로 지정합니다. 여기서 element는이 경우 "myButton"과 같은 id를 나타내는 문자열입니다.

코드를 변경하여 $ [elementToChange]를 참조하도록 변경해야합니다.

+0

많은 감사합니다! that that the trick – user24957

+1

@ user24957에 대한 더 많은 정보를 얻으려면, 그것은 객체의 키에 동적으로 액세스하는 핵심 JavaScript 개념입니다. $는 합금 요소의 모든 ID와 그 안에 많은 다른 것들을 포함하는 객체입니다. ** [JavaScript Objects] (https://www.w3schools.com/js/js_objects.asp) 사용에 대한 자세한 내용은 여기를 참조하십시오 ** –