2011-10-11 97 views
0

我想向中继器内的每个组件添加事件侦听器,但不知道如何。以下是我尝试过的一些代码:将事件侦听器添加到中继器内的Flex组件

<mx:Repeater id="rp" dataProvider="{dataProvider}" width="100%"> 
    <mx:Button id="attach" creationComplete="addListeners(attach[rp.currentIndex])"/> 
</mx:Repeater> 

这是行不通的。在完成按钮创建之前,直到中继器完成而不是(如我所料)完成之前,不会调用creationComplete。我不知道如何完成这一点。

顺便说一句 - 我也尝试将creationComplete放在中继器的父组件上,但它只会在组件第一次被渲染时(中继器内的数据有时会发生变化)才被调用,因此无法正常工作。

+0

不要使用 - 直放站!改为使用列表。或者在这个特定情况下可能是一个ButtonBar。 – RIAstar

+0

@RIAStar是不是与HTML选择框类似的东西?这不是我所需要的。我虚弱了一下这个例子,但在中继器内部,我需要一个按钮,一个复选框和一个标签 – Vinnie

+1

然后使用List并将所有这些东西放在自定义的ItemRenderer中。如果你使用Repeater,那么你正处于一个痛苦的世界 - 正如你可能已经知道的那样。 – RIAstar

回答

1

如果您使用的是元数据中定义的事件,则可以像添加click =“myClickHandler(event)”一样简单。你也可以这样做:

<yourNS:YourComponent id="foo> 
    <creationComplete> 
     <fx:Script> 
      (foo[yourRepeater.currentIndex] as EventDispatcher).addEventListener('the event', yourEventHandler); 
     </fx:Script> 
    </creationComplete> 
</yourNS:YourComponent > 
相关问题