Uma das grandes dificuldades que tive, como iniciante em flex, foi passar um valor da tela principal (Main) para uma subtela (component) e vice-versa. No entanto vai ai a dica:
No meu caso eu tenho uma Main que contem um tabNavigator com vários components, conforme abaixo:
< Application xmlns:view="view.*" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:TabNavigator id="nav">
<view:mes_corrente id="tab_mes_corrente" label="Mês Corrente" />
<view:acumulado id="tab_acumulado" label="Acumulado"/>
</mx:TabNavigator
</mx:Application>
Abaixo segue o componente, contido no TabNavigator.(Este componente está no caminho: src/view/mes_corrente.mxml)
<mx:Canvas name="mc">
<mx:Label id="lbl_titulo"/>
</mx:Canvas>
OK. Para passar um valor de dentro do Main para o componente "mes_corrente" o código fica assim:
<mx:Application creationComplete="ipassarValorParaComp()" xmlns:view="view.*"
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
private function passarValorParaComp():void
{
tab_mes_corrente.lbl_titulo.text="Eu recebi este valor do Main";
}
]]>
<mx:TabNavigator id="nav">
<view:mes_corrente id="tab_mes_corrente" label="Mês Corrente" />
<view:acumulado id="tab_acumulado" label="Acumulado"/>
</mx:TabNavigator>
</mx:Application>
Pronto. Quando rodar o sistema o label do component "mes_corrente" receberá o valor passado pelo Main.
Para passar ou alterar um valor no Main, basta fazer o seguinte:
Vamos alterar o label de uma aba do tabNavigator que está no Main.
<mx:Canvas name="mc">
<mx:Script>
<![CDATA[
private function mudaAba():void
{
Application.application.tab_mes_corrente.label="O component mudou meu nome";
}
]]>
<mx:Label id="lbl_titulo"/>
<mx:Button click="mudaAba()"/>
</mx:Canvas>
Pronto!!!
Talvez isso pareça simples para os animais em Flex, más para quem está iniciando é de grande vália.
Nenhum comentário:
Postar um comentário