Tenho um ViewStack e carrego um componente cada NavigatorContent.
Há um componente de listar cliente (aparece primeiro) e outro de inserir cliente.
Preciso que a lista do primeiro componente seja atualizada assim que eu inserir um cliente (quando por ex, eu inserir e voltar pra outra view pra ver a lista, constar o cliente lá).
Já tentei apontar direto da segunda view para o datagrid da primeira (forma não recomendada) e também despachar evento de cliente inserido pra pegar na view da lista mas não funcionou, parece que ele perde a referência dos objetos entre as views.
O problema é que não consigo acessar o objeto de outra view pra isso ou, quando despacho um evento de uma view, a outra não consegue pegar também (acho que as views perdem suas instâncias quando mudamos de uma pra outra).
Uma forma que encontrei pra meu problema foi recarregar o DataGrid da primeira view no evento “show” do NavigatorContent, mas não consegui fazer a comunicação dos componentes entre as views.
O container dos componentes é o ViewStack.
Imagino que esteja falando de tentar algo como “views.cpBuscaCliente.dataGridCliente…” (de acordo com o cod abaixo) , mas o flex não cria árvore de objetos, os IDs (objetos) são acessados diretos, mas mesmo assim, tentando acessar direto o “cpBuscaCliente” no componente de inserir cliente não deu certo, ele não reconhece o obj/componente de busca.
Nao nao oque voce esta tentando fazer é tight coupling um componente dependente do outro. Mudou um id, fo**u a aplicacao.
Digo para disparar um custom event de um stack para ser capturado no container e o container executar a operacao no outro ou transferir informacoes para o outro stack.
Se nao entendeu, me adiciona no skype e eu te explico melhor. skype:fa.batista
Pela hora complicou usar skype, mas tentei algo bem básico pra ver se a aplicação pega um custom event (bem simples), por enquanto não rolou mas ainda não vi onde errei.
1 - coloquei o listener onde ficam os componentes
[code]<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void{
addEventListener("ClienteInserido",handleClienteInserido);
}
private function handleClienteInserido(e:Event):void{
Alert.show("pegou ClienteInserido");
}
]]>
</fx:Script>
Sim, era como estava antes e, sem o bubble, não tava rolando.
Mas isso deve ser pq estou usando um módulo. Carrego na aplicação principal um módulo de cliente que por sua vez carrega os componentes (um de busca/edição/exclusão e outro de inserção).
abs