如何知道Flex中组件渲染的顺序

时间:2010-04-14 21:09:35

标签: 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时,我得到一个“null”对象错误。这意味着我猜测子组件在调用group1_activateHandler之前被渲染,因此myVariable被设置。

在创建子组件之前,我该怎么做才能确保父容器初始化变量?

2 个答案:

答案 0 :(得分:2)

您应该在initialize()而不是creationComplete()中设置变量,该变量在创建和渲染所有组件后调用。

答案 1 :(得分:0)

我建议您将变量从组件中分解为单独的代码,您可以将其与实际组件分开实例化。然后使用绑定将组件绑定到此类。这将为您提供更清洁的设计。