Вы также можете отправить событие из компонента ItemRenderer и добавить прослушиватель в основной документ. Это полезно, если вы хотите перенести компонент ItemRenderer в отдельный файл компонента MXML.
Вот оно с вашим кодом:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var storyCards:ArrayCollection;
private function updateStory():void
{
trace("success");
}
]]>
</mx:Script>
<mx:TileList dataProvider="{storyCards}" myEvent="updateStory();">
<mx:itemRenderer>
<mx:Component>
<mx:Metadata>
[Event(name="myEvent", type="flash.events.Event")]
</mx:Metadata>
<mx:HBox>
<mx:Label />
<mx:TextInput keyUp="dispatchEvent(new Event('myEvent', true))" />
<mx:TextArea text="{data.notes}" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:TileList>
</mx:Canvas>
Вот как бы вы использовали его в отдельном компоненте MXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var storyCards:ArrayCollection;
private function updateStory():void
{
trace("success");
}
]]>
</mx:Script>
<mx:TileList dataProvider="{storyCards}" myEvent="updateStory();" itemRenderer="StoryEditor" />
</mx:Canvas>
StoryEditor.mxml:
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Metadata>
[Event(name="myEvent", type="flash.events.Event")]
</mx:Metadata>
<mx:Label />
<mx:TextInput keyUp="dispatchEvent(new Event('myEvent', true));" />
<mx:TextArea text="{data.notes}" />
</mx:HBox>