2008-11-22 63 views
1

我有一個手風琴控制內部進行數據綁定孩子中繼器的問題,希望你能幫助... ...Flex幫助:中繼器在手風琴控制不重複

我有一個ViewStack手風琴(其中,該ViewStack也在另一個頂級ViewStack中)。我在手風琴控制的每個孩子身上都有一個轉發器。該組件看起來像這樣:

 

<mx:Box 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="init()" 
> 
<mx:ViewStack> 
... 
<mx:Accordion creationComplete="accordianInit()"> 
    <mx:Box label="Groups" width="100%"> 
     <mx:Repeater id="rpGroups" width="100%"> 
      <mx:CheckBox id="chkGroups" 
       label="{rpGroups.currentItem.name}" /> 
     </mx:Repeater> 
    </mx:Box> 
    <mx:Box label="Contacts"> 
     <mx:Repeater id="rpContacts"> 
      <mx:CheckBox id="chkContacts" 
       label=quot;{rpContacts.currentItem.full_name}" /> 
     </mx:Repeater> 
    </mx:Box> 
</mx:Accordion> 
... 
</mx:ViewStack> 

<mx:Box> 
 

的問題是,如果我綁定2箇中繼器在初始化功能,那麼這兩個中繼器不顯示任何數據。如果我綁定在accordianInit功能的中繼,那麼只有第一個中繼器(rpGroups)獲取數據綁定...

我應該在哪裏進行數據綁定的中繼器,使兩個中繼重複正確?

希望這是有道理的,如果不是我可以詳細闡述更多,任何幫助表示讚賞。

回答

1

綁定中繼器在MXML本身源的dataProvider:

<mx:Repeater dataProvider="{the_data}" ... /> 

原因你看到你的行爲是因爲手風琴(和ViewStack)不會創建它的所有兒童的權利遠。它只創建可見的孩子(所以,最初的第一個Box和第一個ViewStack孩子)。

由於這種行爲,當您嘗試將數據分配給第一個init()事件處理程序中的中繼器時,中繼器沒有實例化的容器來重複進入子節點。當您將數據分配給accordionInit()中的轉發器時,只有第一個Box已經創建,這就是爲什麼只有第一個轉發器工作。

如果您不想通過Repeater標記的dataProvider屬性綁定數據(如上所示),那麼您可以使用Accordion上的更改處理程序將用戶設置爲轉發器數據更改窗格(因爲用戶點擊窗格時,它們由Flex框架創建)。

所有這一切都關於從的creationPolicy屬性:http://livedocs.adobe.com/flex/3/html/layoutperformance_05.html