有没有办法通过传递变量来定位特定的合金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。容器,但我宁愿知道如何直接设置标志。
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 :(得分:2)
您可以使用$ .id从控制器引用视图中的元素,因此如果您有一个名为“myButton”的元素,则会将其引用为$ .myButton。如果您将名称作为变量传递给期望名为“element”的参数的函数,那么您将其解析为$ [element],其中element是表示id的字符串,因此在这种情况下为“myButton”。
在您的情况下,将代码更改为引用$ [elementToChange]应该这样做。