O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na internet.
Bruno, acho que tem algo bem estranho aí.
A implementação do método getInstance (isso é um Singleton, não?) não
é assim. Não deves mudar isso.
Para fazer o que queres, no Command que trata o result do
RemoteObject, atribui o event.result a uma propriedade pública do teu
Model.
Se não tens um Command, então, no teu resultHandler, faz a atribuiçao
do event.result para o Model (o teu Singleton)
Na minha aplicação tenho vários componentes, em telas diferentes, em
níveis diferentes... que compartilham o mesmo conjunto de dados.
Por exemplo, lista de bancos, existem vários componentes que lidam com
a mesma lista de bancos.
Então, o que eu queria:
Pensei em criar uma classe estática que tivesse nela uma propriedade,
que é o arraycollection com os bancos.
Nessa mesma classe eu tenho duas propriedades do tipo date, lastUpdt e
lastGet.
lastUpdt. Toda vez que no meu sistema eu modificar a lista de bancos
( ou seja, gravar, excluir ou editar um banco no banco de dados ) eu
iria gravar o memento dessa alteração no lastUpdt
lastGet. Ia guardar aqui o momento em que e fiz a ultima busca
( select ) no banco de dados dos meus bancos.
Então, como eu iria usar. Toda vez que fosse utilizar a lista de
bancos, eu iria pegar dessa classe estática. Se houvesse a minha lista
estivese destualizada ( eu saberia isso comparando lastGet e
lastUpdt ) eu iria atualizar antes de usar.
Como eu poderia implementar algo que fosse equivalente a isso?
Tentei fazer diferente, ao invés de retornar uma instancia do meu
arraycollection eu apenas criei um metodo refresh(), esse metodo ira
comparar lastUpdt e lastGet e se fosse necessário ira atualizar a
lista. Além disso, fiz minha propriedade com o arraycollection ser
pública. A inteção era fazer um binding da propriedade da minha classe
com o dataprovider dos componentes. Mas quando tento usar minha classe
para fazer o binding, da erro:
var addc:addconta = new addconta();
addc.addEventListener("criarconta",criarcontaListener);
//atualizo a lista
TipoContaProvider.refresh(); //Access of undefined property
TipoContaProvider.
// faço binding
BindingUtils.bindProperty
(addc,"tipoConta_dp",TipoContaProvider,"tipoConta_dp");//Access of
undefined property TipoContaProvider.
PopUpManager.addPopUp(addc,this,true);
Atualmente eu resolvo esse problema assim:
Dado dois componentes, eles tem um ou mais pais em comum. Não importa
onde eles estejam, na pior das hipóteses terão a app como pai comum.
Eu vou no pai comum de mais baixo nível, ou seja, o primeiro pai comum
de baixo para cima, e nesse pai comum eu faço a chamada remota, crio
os arraycollection e os faço bindable.
Depois eu vou decendo o nível, criando um arraycollection em cada
container, e fazendo o bing desse arraycollection com o
arraycollection do pai. E assim sucessivamente, até chegar no
container quem tem o controle que usa o arraycollection, onde eu faço
o ultimo bing do arraycollection para o dataProvider do controle.
Não dá pra implementar uma chamada síncrona como vc quer se o
resultado a retornar é assíncrono, isto é, vem de um chamada externa a
um banco de dados.
Uma alternativa é usar um mecanismo de "callback", mais ou menos desta
maneira:
- tua função de consulta tomaria além do argumentos normais, um
argumento extra indicando uma função tua (função de callback)
- no teu singleton, vc verifica se tem que fazer uma chamada externa,
se não, chama o 'callback' imediatamente com os argumentos necessários
- caso tenha que atualizar a informação a partir do banco de dados, vc
faz a chamada necessária e no resultEvent, atualiza teus dados e aí
sim chama o 'callback'
No lado consumidor, vc faz a chamada à tua função estática passando o
'callback' (que pode inclusive estar inline), ex:
foobar(arg1,arg2,arg3...,function (r1,r2,r3,,,):void {... lida
com os dados retornados...});
hth
julio
On 2 nov, 12:35, Bruno Carneiro <guimaraescarne...@gmail.com> wrote:
> Na minha aplicação tenho vários componentes, em telas diferentes, em
> níveis diferentes... que compartilham o mesmo conjunto de dados.
> Por exemplo, lista de bancos, existem vários componentes que lidam com
> a mesma lista de bancos.
> Então, o que eu queria:
> Pensei em criar uma classe estática que tivesse nela uma propriedade,
> que é o arraycollection com os bancos.
> Nessa mesma classe eu tenho duas propriedades do tipo date, lastUpdt e
> lastGet.
> lastUpdt. Toda vez que no meu sistema eu modificar a lista de bancos
> ( ou seja, gravar, excluir ou editar um banco no banco de dados ) eu
> iria gravar o memento dessa alteração no lastUpdt
> lastGet. Ia guardar aqui o momento em que e fiz a ultima busca
> ( select ) no banco de dados dos meus bancos.
> Então, como eu iria usar. Toda vez que fosse utilizar a lista de
> bancos, eu iria pegar dessa classe estática. Se houvesse a minha lista
> estivese destualizada ( eu saberia isso comparando lastGet e
> lastUpdt ) eu iria atualizar antes de usar.
> Como eu poderia implementar algo que fosse equivalente a isso?
E na hora de usar, estou tentando assim, mas sempre obtenho um erro na
hora da compilação
private function lbclick(e:ItemClickEvent):void{
switch (e.label){
case 'Criar uma nova conta':
var addc:addconta = new addconta();
addc.addEventListener("criarconta",criarcontaListener);
imagino que o error está nesta linha aqui não:
remote.pegarTC.addEventListener("result", pegarTCResultHandler
(event,callback));
é que no adEventListener vc tem que informar uma função, e não
executar uma chamada... tente:
remote.pegarTC.addEventListener("result", function
(event:ReseultEvent):void {pegarTCResultHandler(event,callback)});
hth
julio
On 2 nov, 13:15, Bruno Carneiro <guimaraescarne...@gmail.com> wrote:
> E na hora de usar, estou tentando assim, mas sempre obtenho um erro na
> hora da compilação
> private function lbclick(e:ItemClickEvent):void{
> switch (e.label){
> case 'Criar uma nova conta':
> var addc:addconta = new addconta();
> addc.addEventListener("criarconta",criarcontaListener);
private function lbclick(e:ItemClickEvent):void{
switch (e.label){
case 'Criar uma nova conta':
var addc:addconta = new addconta();
addc.addEventListener("criarconta",criarcontaListener);
TipoContaProvider.getInstance( // 1120: Access of undefined
property TipoContaProvider.
function (ac:ArrayCollection):void {
this.tipoConta_dp = ac;
});
Pelo que vc indicou o erro está na definição/declaração da classe
TipoContaProvider.
Se vc puder postar o codigo dela e do módulo onde vc está usando, pode
ser que de pra ver onde está o problema.
Só com estes snippets aí não dá.
julio
On 3 nov, 12:06, Bruno Carneiro <guimaraescarne...@gmail.com> wrote:
> Julio, fiz essa modificação o mesmo erro contina.
> private function lbclick(e:ItemClickEvent):void{
> switch (e.label){
> case 'Criar uma nova conta':
> var addc:addconta = new addconta();
> addc.addEventListener("criarconta",criarcontaListener);
> TipoContaProvider.getInstance( // 1120: Access of undefined
> property TipoContaProvider.
> function (ac:ArrayCollection):void {
> this.tipoConta_dp = ac;
> });
remote.pegarTC.addEventListener("result",
function (event:ResultEvent):void {
this.pegarTCResultHandler
(event,callback);
//Main Thread (Suspended: TypeError:
Error #1006: pegarTCResultHandler não é uma função.)
//this.pegarTCResultHandler = <errors
during evaluation>
//No such variable:
pegarTCResultHandler
});