Miguel,

a forma recomendada para trabalhar com o Flex, é separar muito bem o que é "View" daquilo que é "Model" (dados). Regra geral, à medida que mexes nos campos de uma view, esta deve mudar directamente o model. Desta forma quando mudas de janela, a view pode mudar, mas o model manter-se-á se tiveres essa instância do model gravada em algum sitio que não seja destruido quando mudares de view.

Imagina possuires a classe Utilizador:

[Bindable]
class Utilizador
{
    public var nome:String;
    [Bindable]
    public var amigos:ArrayCollection = new ArrayCollection();

}


E a seguinte view:

<!-- Referencia para o data object (local model) -->
<myModel:Utilizador id="utilizador"/>

<mx:TextInput id="nomeTxt" change="{utilizador.nome = nomeTxt.text}"/>
<mx:DataGrid id="amigos" dataProvider="{utilizador.amigos}"/>
<mx:Button id="addAmigo" click="utilizador.amigos.addItem('meuAmigo')"/>


Repara que a view actualiza directamente o model, e quando saires da view a referência para o utilizador vai estar actualizada. Por isso desde que graves esta referência num local fora da view (i.e. o utilizador (vazio) é criado fora da View, e passado para dentro desta) vais ter sempre os dados disponíveis e actualizados.

Esta abordagem só tem o problema do "cancel". Se cancelares as alterações, o teu objecto entretanto já foi alterado, e é dificil repô-lo. Mas isso é outra discussão. :)

João Saleiro

CTO @ Webfuel
Adobe Certified Expert
Adobe Community Expert
Co-founder of the Portuguese RIA Community


View João Saleiro's profile on LinkedIn



Miguel Vaz wrote:

Obrigado pela resposta rápida, Rui.

O que pretendo é simples em funcionamento, mas parece-me algo complicado em implementação:

- Imagina um tabnavigator com 3 tabs: geral, eventos, programa
- Se estiver a editar o form no tab "geral" e clicar para mudar para o tab "eventos", queria gravar de imediato o form do "geral"
- O mesmo para os restantes tabs. Se editar um e tentar mudar, deveria gravar os dados do tab onde estou.

Alguns dados de um dos tabs contêm datagrids, itemrenderers e afins, trazendo uma complexidade acrescida ao "gravar", que devia ser no componente de cada tab.

O deadline é tão apertado que já estou a considerar abrir uma janela para cada área, editar, e ao sair gravar. :-P

MV


2009/12/2 Rui D. Silva <[email protected]>

Miguel,

Penso que o mais natural seria teres os dados dos componentes
presentes nos diversos tabs com bindings para variáveis da aplicação
ou componente que contém o TabNavigator e no evento change verificar
as propriedades oldIndex para decidir qual os dados que deves gravar.

Talvez com uma ideia mais clara do que queres realmente fazer possamos
dar uma ajuda/sugestão mais orientada.

Até já,

Rui

On Dec 2, 6:10 pm, Miguel Vaz <[email protected]> wrote:
> Boa tarde,
>
> Já procurei onde me lembrei a tentar encontrar uma solução, mas até agora
> nada.
>
> Pretendo ter um tabnavigator (ou algo do género) com canvas em cada tab
> (componentes independentes) e que, ao mudar de tab, toda a informação na
> presente tab (componente que está nessa tab) seja gravada. Como posso fazer
> isto?
>
> Pensei em guardar o objecto de cada tab e ao mudar de tab (event change),
> chamar uma função, apanhar os dados no componente e gravar.
>
> ou ao mudar de tab, o componente nesssa tab gera um evento que vai
> despoletar o "gravar" no componente da tab anterior?
>
> Eu sei, estou completamente confuso com isto. Alguma luz era agradecida.
>
> Obrigado.
>
> MV



--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para [email protected]
 Para anular a inscrição neste grupo, envie um email para [email protected]
 Para mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT

-~----------~----~----~----~------~----~------~--~---

Responder a