代码之家  ›  专栏  ›  技术社区  ›  user24957

使用Appcelerator Alloy动态定位UI元素?

  •  0
  • user24957  · 技术社区  · 7 年前

    有没有一种方法可以针对特定的合金UI元素 ? 我想这样传递一个变量:

    控制器。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
    }
    

    看法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>
    

    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";
                }
            }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   jasonkneen    7 年前

    您可以使用$从控制器中引用视图中的元素。因此,如果您有一个名为“myButton”的元素,您可以将其引用为$。我的按钮。如果您将名称作为变量传递给需要一个名为“element”的参数的函数,那么您可以将其作为$[element]进行寻址,其中element是一个表示id的字符串,在本例中为“myButton”。

    在您的情况下,将代码更改为引用$[elementToChange]应该可以做到这一点。