2010-04-14 44 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