Um exemplo genérico... e alguma explicação abaixo... ARQUIVO: /model/ExemploModel.as package model{ import com.adobe.cairngorm.model.IModelLocator; import mx.collections.ArrayCollection; import vo.ProjetoVO; [Bindable] public class ExemploModel implements IModelLocator{ // Singleton structure ============================================ private static var instance:ExemploModel; public function ExemploModel(enforcer:Enforcer){ if(enforcer == null){ throw new Error("Singleton. Please use getInstance()"); } } public static function getInstance():ExemploModel{ if(instance == null){ instance = new ExemploModel(new Enforcer); } return instance; } // Singleton structure ============================================ public var vo:ProjetoVO; public var projetos:ArrayCollection;
} } class Enforcer{} ARQUIVO: /vo/ProjetoVO.as package vo { import com.adobe.cairngorm.vo.IValueObject; [RemoteClass(alias="cfc.vo.ProjetoVO")] //uso coldfusion/LiveCycle [Bindable] public class ProjetoVO implements IValueObject { public var prop:String; //outras propriedades que descrevem o objeto de valor } } ARQUIVO: /view/DataGridForm.mxml <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="{init()}" > <mx:Script> <![CDATA[ import model.ExemploModel; [Bindable] private var exemploModel:ExemploModel; private function init():void{ exemploModel = ExemploModel.getInstance(); } ]]> </mx:Script> <mx:DataGrid id="dgProjetos" dataProvider="{exemploModel.projetos}" selectedItem="{exemploModel.projeto}" change="{exemploModel.projeto = lsProjetos.selectedItem as ProjetoVO}"> <!-- Colums --> </mx:DataGrid> </mx:VBox> ARQUIVO: /view/Form.mxml <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="{init()}" > <mx:Script> <![CDATA[ import model.ExemploModel; [Bindable] private var exemploModel:ExemploModel; private function init():void{ exemploModel = ExemploModel.getInstance(); } ]]> </mx:Script> <mx:List id="lsProjetos" dataProvider="{exemploModel.projetos}" selectedItem="{exemploModel.projeto}" label="prop" change="{exemploModel.projeto = lsProjetos.selectedItem as ProjetoVO}"/> <mx:TextInput text="{exemploModel.projeto.prop}"/> </mx:VBox> O conceito está ai... desculpe se houver alguns erros de sintaxe... digitei aqui mesmo no email. Mas dá pra perceber a estrutura. O "ExemploModel" possui as propriedades: "projetos:ArrayCollection" (ao qual você vai colocar os dados que você quer listar no DataGrid por exemplo) e "projeto:ProjetoVO" (a qual vamos fazer o 'bind' nos controles que podem apresentar o dado selecionado). OBS: Eu uso Cairngorm em meus projetos, mas veja que essa aí é uma parte do Cairngorm que você poderia facilmente adotar sem precisar consumir o framework. Por exemplo, a depender do seu projeto, no exemplo acima não faria o menor sentido (ou seja, nao teria nenhuma funcionalidade) implementar o IModelLocator e/ou o IValueObject. Essas interfaces são apenas "marcadoras" (no Cairngorm 2.2.1). O IModelLocator para mim só fez sentidos em projetos com Modules e o IValueObjet só apresentou "funcionalidade" quando trabalhei o FlashRemoting,LiveCycle ou BlazeDS, mas acredito que também faça sentido com AMFPHP pela natureza da funcionalidade de "traduzir" objetos ServerSide/ClientSide do AMF. IMPORTANTE: Para o código acima funcionar, é necessário que você faça suas implementações nele... eu só tentei responder a sua questão com os trechos mais importantes. Espero que ajude esclarecer. Qualquer coisa, mande ai suas dúvidas! O que eu souber, e tiver tempo, ajudo. Mas certamente tem bastante gente aqui pra te ajudar. -- Vicente Maciel Junior Independent Web Developer & Consultant Adobe Advanced Certified Developer Adobe Certified Instructor (ColdFusion & Flash Platform) +55 71 9212-0909 / 8120-0035 MSN: [EMAIL PROTECTED] / Twitter: macieljr http://teclandoalto.blogspot.com 2008/10/19 Flávio Tomazio <[EMAIL PROTECTED]> > > Como eu faria isso usando o Model Locator do Cairngorm? > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---