2011-10-11 101 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 > 
相關問題