如何在TileList中访问引用自定义itemRenderer?

问题描述

| 我有10个项目的TileList cp。 我如何从外部(在其中创建TileList cp的地方)调用4.项目(例如)中的函数? 谢谢     

解决方法

        更新: 根据您的评论,这应该更加容易。您只需遍历List的dataProvider中的每一行,并进行必要的更改。在函数末尾,只需在ArrayCollection上调用the0ѭ函数即可。使用下面的示例:
public function myFunction(evt:Event):void
{
  for each (var o:MyObject in myDataProvider)
  {
    o.someProperty = \"Updated\";
  }

  myArrayCollection.refresh();
}
更新ArrayCollection后,调用ѭ0函数将导致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);\"