【问题标题】:Unable to set "id" property dynamically in Alloy无法在合金中动态设置“id”属性
【发布时间】:2017-06-14 18:41:38
【问题描述】:

我正在尝试设置标签的 id 使用

<ScrollableView 
     id="scrollableView"  
     showPagingControl="false" 
     dataCollection="question" 
     dataTransform="transformFunction"
     dataFilter="dataFilterFunction">   
    <ScrollView id="rwr" width="100%" layout="vertical" scrollingEnabled="false">
        <View  width="100%" layout="vertical"  height="100%" >        
          <Label id='lbl{id}' color="black"  text="{id}{description}" />    

但它不是这样工作的。事实上,我也尝试设置accessibilityLabel,但它再次不起作用。

<Label id='lbl{id}' 
    color="black"  
    text="{id}{description}" 
    accessibilityLabel ="{difficulty_level}" />

我确定 id 字段有一些独特的价值,因为当我在文本中设置时,它会在文本中显示它。 我尝试设置静态文本,即使这不起作用。

<Label id='abc' color="black"  text="{id}{description}" />

但是我可以为 ScrollableView 的 id 字段设置硬编码值,它不是动态创建的!

【问题讨论】:

    标签: titanium titanium-mobile appcelerator-titanium titanium-alloy appcelerator-alloy


    【解决方案1】:

    我相信 id 属性最终会被 Alloy 在构建集合时以某种方式使用,并且以后无法通过通用数据绑定进行操作。

    您没有指定为什么需要直接设置 Id,但是还有另一种方法可以访问集合中的特定视图:itemId 属性。就像在这个例子中一样:

    <ListSection 
      dataCollection=”$.Departures” 
      dataTransform=”transformDeparture”
     >
    
     <ListItem 
       title=”{title}”
       itemId=”{departureId}”
     /> 
    </ListSection>
    

    然后您可以通过编程方式访问该元素,例如,在点击事件中:

    function itemClick(e){
     var model = $.Departures.get(e.itemId);
    }
    

    您可以在 Rene Pot 的 this 7min read article 上找到有关此模式的更多信息。

    希望这对您的问题有所帮助。

    【讨论】:

    • Hnmm 是这么想的......但即使是文章也没有提到这一点,Appcelerator 文档也没有。我认为使用 id 访问元素会很容易。我想访问的元素不是点击的那个。想要避免 children.children.children 链
    • 但它甚至没有设置accessibilityLabel值
    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多