2010-04-14 4 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 в первый раз я получаю «нулевую» ошибку объекта. Это означает, что я предполагаю, что дочерний компонент получает визуализацию перед вызовом group1_activateHandler, и, следовательно, myVariable устанавливается.

Что делать, чтобы родительский контейнер инициализировал переменную до создания дочернего компонента?

ответ

2

Вы должны установить переменную в initialize() вместо creationComplete(), которая вызывается после создания и рендеринга всех компонентов.

0

Я рекомендую вам выставить переменную из компонентов в отдельный код, который вы можете создавать отдельно от реальных компонентов. Затем используйте привязку для привязки ваших компонентов к этому классу. Это даст вам более чистый дизайн.

+0

переменная фактически находится вне компонента, находящегося в «Locator модели», поскольку я использую Cairngorm и ее можно связать. Но мне нужны родительские компоненты для его создания. – Tam

Смежные вопросы