【发布时间】:2013-07-20 16:15:21
【问题描述】:
我尝试在 ItemRenderer 中创建一个 EventListener,但它不起作用。如何监听 ItemRenderer 中的事件?
----在MainHomeView.mxml中----
<fx:Metadata>
[Event(name="myEvent", type="flash.events.Event")]
</fx:Metadata>
protected function btnAdd_clickHandler(event:MouseEvent):void {
var eventObject:Event = new Event("myEvent", true, true);
dispatchEvent(eventObject);
}
----在UserRenderer.mxml(ItemRenderer)中---
protected function init(event:FlexEvent):void{ //run in CreationComplete
addEventListener("myEvent", onHandleEvent);
}
protected function onHandleEvent():void {
trace("Event received");
}
【问题讨论】:
-
itemrenderer 不在您拥有点击处理程序的 Button 的事件传播路径中。你可以试试
list.dispatchEvent(eventObject),但我认为这也行不通。你为什么不操纵数据提供者而不是这个? -
@SamDeHaan 所以你说没有办法在 itemRenderer 中有一个监听器,即使有自定义事件?嗯,太糟糕了
-
这是可能的,但事件只会从调度程序“向上”传播。 livedocs.adobe.com/flex/3/html/help.html?content=events_08.html 您需要找到一种方法来在 itemrenderer 的“下方”分派事件,这很困难。
-
或者,您可以使用某种形式的全局(静态)事件调度程序,itemrenderers 和主类会引用它。我自己没有做过,但应该可以。
-
@SamDeHaan 事件传播,但是按钮是itemRenderer父容器(列表)的单独部分,事件传播会到达按钮吗?我需要对 Global static eventdispatcher 做一些研究
标签: apache-flex flex4 flex4.5 flexbuilder