Haroldo,
Para resolver situações como essas, eu implementei um parametro
"callBack:Function" para que seja levado até o Command uma referência a uma
função que está dentro da minha VIEW à ser notificada quando o "result"
dentro dele (Command) for executado, ou seja, quando a resposta do serviço
chegar.
Fica mais ou menos assim:
SampleEvent.as
============
package com.riabrazil.sampleapp.event.admin
{
import com.adobe.cairngorm.control.CairngormEvent;
import flash.events.Event;
import com.riabrazil.sampleapp.dto.SampleDTO;
public class SampleEvent extends CairngormEvent
{
public static const EVENT:String = "event.admin.SampleEvent";
//carrega dados para o delegate
public var dto:SampleDTO;
//carrega a funcao dentro da view a ser chamada
//no result do command
public var callBack:Function;
public function SampleEvent(dto:SampleDTO, callBack:Function)
{
super(EVENT);
this.dto = dto;
this.callBack = callBack;
}
override public function clone():Event
{
return new SampleEvent(this.dto, this.callBack);
}
}
}
SampleCommand.as (parcial)
======================
1 - tenha uma propriedade para guardar uma referencia ao evento:
private var event:SampleEvent;
2 - no "execute" associe o evento recebido à propriedade para persistí-la
até receber o retorno do servidor:
this.event = eventoRecebido as SampleEvent;
3 - no "result" quando vc recebe o resultado do servidor e quiser que a
função na VIEW seja executada:
this.event.callBack(data); //"data" é o retorno do serviço por exemplo...
(seu xml, digamos)
SampleView.mxml (parcial)
====================
1 - vc vai ter a tal função pra servir de callback ex:
private function callBack(data:Object):void
{
//o q vc quer fazer ao receber o retorno do serviço
}
2 - no dispacth do CairngormEvent vc passa uma referência a essa função...
new SampleEvent(new SampleDTO(param: "value"), callBack).dispatch();
Vicente Maciel Junior
RiaBrazil - Senior Rich App Developer
Independent Web Developer & Consultant
Adobe Advanced Certified Developer
Adobe Certified Instructor (ColdFusion & Flash Platform)
+55 71 8120-0035
MSN: [email protected] / Twitter: macieljr
http://www.riabrazil.com.br
http://teclandoalto.blogspot.com
Grupo de usuarios Oficial Adobe RIA-BA: http://bit.ly/ria-ba
2009/6/19 Haroldo do Nascimento <[email protected]>
> Amigos,
> Estou meio ciente das formas que comunicar o delegate (Cairngorm) a view.
> No entanto, estou com um problema (De iniciante), que esta consumindo um
> preciso tempo e gostaria de saber se alguém pode dizer uma boa maneira de
> resolver.
> Em minha view, tenho um textInput que faz a leitura de scanner de mão.
> Pois bem, ao encontrar os 11 caracteres da etiqueta scaneada, ativo o meu
> event que irá ao meu delegate (dispatch), o banco de dados me devolve um xml
> e eu analiso e dependendo do resultado que o bd devolveu, tenho que abrir
> um panel que esta na minha view;
>
> Ou seja:
>
> if (tiEtiqueta.length == 11) {
> var evento : EntradaSetorEvent = new
> EntradaSetorEvent(EntradaSetorEvent.TESTE);
> evento.data = tiEtiqueta.text;
> evento.dispatch();
> }
>
> Teoricamente, depois do evento.dispatch();, eu poderia pegar o meu
> EntradaSetorModelLocator.getInstance().xml e trabalhar com ele,
> mas da erro, só funciona na segunda vez, pois não deu tempo do
> EntradaSetorModelLocator.getInstance().xml ser carregado.
>
> Alguém pode me ajudar?
>
> Abraço,
>
> Haroldo
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---