Podes sim ter VO's dentro de ArrayCollection emq ue o ArrayCollection é
uma propriedade de outro VO, so que o exemplo que deste na classe
public var getofcilcores:Array = new Array();
o getofcilcores é um Array e não um ArrayCollection, logo não é capaz de
efectuar o dispatch the eventos caso haja alterações.
da seguinte forma é capaz de dar menos problemas
public var getofcilcores:ArrayCollection = new ArrayCollection ();
se tudo estiver correcto não deveras ter problemas a passar a info do
PHP para o FLEX e vice-versa
Miguel Vaz escreveu:
>
> Já tenho tudo mais ou menos a funcionar, apenas com uma dúvida:
>
> E se pretender ter um VO dentro de outro VO? Não da forma como no
> exemplo do João Fernandes, em que um segundo VO existe dentro do
> primeiro, mas apenas uma vez, e sim ter, por exemplo, um VO com uma
> propriedade que será um arraycollection de outro tipo de VO.
>
> Algo assim:
>
>
> package vo
> {
> import com.adobe.cairngorm.vo.IValueObject;
>
> import mx.controls.Text;
>
> [RemoteClass(alias="vo.getOFcilindrosVO")]
>
> [Bindable]
> public class getOFcilindrosVO implements IValueObject {
>
> public var num_of:Number;
>
> public var obs1:Text;
> public var obs2:Text;
> public var obs3:Text;
>
> public var posicao:Number;
>
> public var getofcilcores:Array = new Array(); // aqui fica um
> arraycollection de VOs
>
>
> }
> }
>
> O getofcilcores é um array que terá um outro VO em cada indice. O
> problema é que o interior é recriado como Object. Do PHP os dados
> regressam correctamente, um VO com propriedades e um Array com indices
> como VOs. A transferência é que falha.
>
> A questão é se deverei ter uma função dentro do VO para transferir
> valor a valor e construir devidamente o getofcilcores como
> arraycollection de VOs.
>
> Confuso? :-)
>
> Algo como ter um pessoasVO que tem uma propriedade que é uma lista de
> hoteisVO, por exemplo.
>
> De qualquer forma, muito obrigado pelas dicas, foram extremamente
> esclarecedores, acho que já entendi como posso lidar convenientemente
> com VOs. Apesar de darem algum trabalho, os dados ficam melhor
> estruturados e com extras acrescidos.
>
> MV
>
>
>
>
>
>
> 2009/4/23 Nuno Fernandes <[email protected]
> <mailto:[email protected]>>
>
>
> Pois Miguel o teu problema é estares a usar o
> modelo.OFgeral[posicao].propriedade="dados".
>
> O que se passa é que esse tipo de alterações não fazem que o
> ArrayCollection faça o dispatch do evento CollectionChange. A melhor
> forma é mesmo como eu exemplifiquei,
>
> modelo.OFgeral.removeItemAt(posicao)
> modelo.OFgeral.addItemAt(posicao,null)
> o metodo addItem provoca o dispatch do evento CollectionChange e tudo
> começa a funcionar.
>
> o que tu chamaas de "limpar" ou "atribuição"do ponto de vista do
> ArrayCollection é a mesma coisa, alteração em um item. Eu geralmente o
> que faço é no VO do FLEX tenho um campo que me indica se o item é para
> ser usado, visível, ou qualquer outra coisa, e faço a alteração a esse
> nivel, assim sempre posso ter filterFunctions associadas ao
> ArrayCollection e outras coisas mais :D
>
> Abraços
>
> Miguel Vaz escreveu:
> >
> > No meu modelo eu tenho:
> >
> > OFgeral:ArrayCollection = new ArrayCollection();
> >
> > Antes de fazer a chamada à base de dados, tenho uma rotina que
> corre o
> > OFgeral à procura de posições disponíveis (que se traduzem em
> janelas
> > abertas), onde irá colocar os resultados. Daí existir no command
> > apenas uma atribuição e não um addItem. O addItem só é feito uma
> vez,
> > antes da chamada à BD, se a posição estiver abtera, caso contrário
> > apenas limpo os dados nessa posição (modelo.OFgeral[posicao]=null) e
> > reinsiro o VO.
> >
> > Os meus binds, como no exemplo do text, são sempre
> > {modelo.OFgeral.getItemAt(posicao).propriedade}, para atribuições,
> > faço modelo.OFgeral[posicao].propriedade="dados".
> >
> > De qualquer forma, de momento não posso fazer nenhum teste, já que
> > estou em casa, mas amanhã vou analisar melhor a situação e deixo
> aqui
> > o que encontrar. Vou rever melhor o código e ver se existe alguma
> > coisa que me está a escapar, já que o projecto começa a ganhar uma
> > dimensão considerável.
> >
> > Agradeço imenso o tempo e a paciência que estão todos a ter.
> Aprecio o
> > esforço, já que isto dos VOs é mais uma lacuna nos meus
> conhecimentos.
> > Lacuna de um assunto que considero bastante importante para uma
> > eficiente gestão/organização de transmissão de dados.
> >
> > Quem sabe daqui a uns meses vos dou um assunto interessante para uma
> > eventual apresentação num dos eventos. ;-) O projecto que estou a
> > desenvolver é algo um pouco à margem do habitual em projectos de
> flex,
> > e poderá ser interessante como case study para mostrar algumas
> > utilizações menos vistas com flex.
> >
> > MV
> >
> >
> >
> >
> >
> > 2009/4/22 Nuno Fernandes <[email protected]
> <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>>
> >
> >
> > Bom tenho que vazar, mas aqui fica a info
> >
> > 1. o OFgeral _*TEM*_ que ser do tipo ArrayCollection, se
> for um
> > Array, não há bandings
> > 2. para "mexeres" num ArrayCollection não usamos a mesma
> técnica do
> > Array [index], usamos os metodos getItemAt(index),
> > addItemAt(index) e removeItemAt(index) por exemplo
> >
> > Se o OFgeral for um ArrayCollection nas labels só tens que
> colocar:
> >
> > text="{modelo.OFgeral.getItemat(1).num_of}"
> >
> > mas na function result isto :
> >
> > modelo.OFgeral[posicao]= tempor;
> >
> > deve ser substituido por
> >
> > modelo.OFgeral.addItemAt(posicao, tempor);
> >
> > Mas le a DOC sobre esses métodos, porque no caso do
> addItemAt se nesse
> > index já existir algo, esse conteudo passa para o index a
> seguir e
> > assim
> > sucessivamente, se quiseres alterar o conteudo de um index no
> > ArrayCollection o que deves fazer é primeiro removes e depois
> > adicionas.
> >
> > Abraços
> >
> >
> >
> > >
>
>
>
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---