处理显示与获取的值不同的方法(变相解决itemrender的内部属性问题)

<mx:Object text="1" id="t" index="123"/>
<mx:Object text="2" id="g" index="2323"/>
近期做项目,需要实现已以上数据,显示text,点击后获取index的值
方法一:
自定义一个itemrenderer,将处理函数写在空间里面
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" creationComplete="init();" click="click();"
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
public var tem:String;

private function init():void
{
tem=data.index;
}
private function click():void
{
Alert.show(data.index);
}
]]>
</mx:Script>
<mx:Label text="{data.text}"/>
</mx:HBox>

方法二:将处理函数写在主页面里
<mx:List id="list2">
      <mx:dataProvider>
<mx:Object text="1" index="12"/>
<mx:Object text="2" index="22"/>
</mx:dataProvider>
<mx:itemRenderer>
<mx:Component>
     <mx:Label text="{data.text}" click="send()">
<mx:Script>
<![CDATA[
           import mx.controls.Alert;
            private function send():void
{
                      Alert.show(data.index);
}
]]>
</mx:Script>
</mx:Label>

</mx:Component>
</mx:itemRenderer>
</mx:List>
以上两种方法均与代码耦合性太高,不便于修改,经多次自我摸索,找到方法三
方法三:
<mx:List id="list" itemRenderer="com.listitem" itemClick="click(event)">
<mx:dataProvider>
<mx:Object text="1" id="t" index="123"/>
<mx:Object text="2" id="g" index="2323"/>
</mx:dataProvider>
</mx:List>
处理函数
private function click(event:Event):void
{
  Alert.show(List(event.currentTarget).selectedItem. index.toString());
}

你可能感兴趣的:(it)