无法在 Alloy 中动态设置 "id" 属性

Unable to set "id" property dynamically in Alloy

我正在尝试使用

设置标签的 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 字段设置硬编码值!

我相信 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 上找到更多关于此模式的信息。

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