我有一个包含10个项目的TileList cp。 如何从外部调用4. item(例如)中的函数,我在其中创建了TileList cp?
由于
答案 0 :(得分:0)
<强>更新强>
根据您的评论,这应该更容易。您只需循环遍历List的dataProvider中的每一行,并进行必要的更改。在函数结束时,只需调用ArrayCollection上的refresh
函数。使用下面的示例:
public function myFunction(evt:Event):void
{
for each (var o:MyObject in myDataProvider)
{
o.someProperty = "Updated";
}
myArrayCollection.refresh();
}
更新ArrayCollection后,调用refresh
函数也会导致List刷新其项呈示器。
原始答案:
听起来您希望在ItemRenderer
中点击某个按钮或其他内容时调用ItemRenderer
以外的功能,但仍然可以访问所点击项目的数据。
假设我没有这个,你仍然不需要访问ItemRenderer
本身。你可以做这样的事情(只是一个粗略的例子):
<fx:Script>
<![CDATA[
public function myFunction(evt:Event):void
{
trace(MyObject(myList.selectedItem).someProperty.toString());
}
]]>
</fx:Script>
<mx:List id="myList" dataProvider="{myDataProvider}" >
<mx:itemRenderer>
<fx:Component>
<mx:CheckBox selectedField="IsSelected" change="outerDocument.myFunction(event);" />
</fx:Component>
</mx:itemRenderer>
</mx:List>
如果做需要传递一个完全独立的参数,该参数未存储在List的dataProvider中,只需将其作为参数传递给change eventHandler。
change="outerDocument.myFunction(event, someOtherValue);"