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
-~----------~----~----~----~------~----~------~--~---

Responder a