2010-04-14 49 views
0

我有一個組件,它有一個子組件,它們都使用模型中的共享變量。共享變量需要由父組件設置才能由子組件使用。我不喜歡這樣的父組件:如何知道組件在Flex中渲染的順序

<mx:Canvas 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    ... 
    creationComplete="group1_completeHandler(event)" > 
     .... 
     protected function group1_activateHandler(event:Event):void { 
      model.myVariable = something; 
     } 
    .... 
    <components:myCustomComponent> 
    ... 
    <components:myCustomComponent> 
... 
</mx:Canvas> 

但裏面的時候myCustomComponent代碼試圖使用MYVARIABLE首次,我得到一個「空」對象錯誤某些原因。這意味着我猜在child1_activateHandler被調用之前,子組件被渲染,因此myVariable被設置。

我應該怎麼做才能確保父容器在創建子組件之前初始化變量?

回答

2

您應該在initialize()而不是creationComplete()中設置變量,在創建和渲染所有組件後調用該變量。

0

我建議你將組件中的變量分解爲一個單獨的代碼,您可以將其與實際組件分開實例化。然後使用綁定將您的組件綁定到此類。這會給你一個更清潔的設計。

+0

因爲我使用Cairngorm並且它是可綁定的,所以變量實際上不在它在「模型定位器」中的組件中。但我需要父組件首先實例化它。 – Tam 2010-04-14 21:36:37