Comunidad de diseño web y desarrollo en internet online

Reflejar cambios de la Aplicacion en un Modulo

Citar            
MensajeEscrito el 23 Abr 2010 10:39 pm
Tengo una Aplicacion que tiene un viewstack, dentro del viewstack encapsule un modulo.

En la aplicación tengo un menu con opciones y lo que muestra el Modulo depende del valor de ese menu.
puse import mx.core.Application; y recupere el valor con Application.application etc

Me funciona, pero a la primera, es decir eligo algo click en el ventana del viewstack que tiene el modulo y bien hace lo que quiero, me devuelvo al menu de la aplicacion, cambio el valor y el modulo se quedo con el primero valor.

Como puedo hacer que el modulo entienda que hubo un cambio en la aplicacion? estaba mirando el livedocs de Flex, hablan algo de EventDispatcher, me serviría esto para lo que quiero hacer, o ando frio frio? :roll:

Por Salov

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Abr 2010 10:52 am
Haz que el módulo escuche algún evento de Application

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Abr 2010 02:48 pm
sip jorge tiene razon. tienes que crear un evento que el modulo pueda procesar para que realize el cambio.


mas ayuda: foros de flex en español http://foro.aprendiendoflex.com/

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Abr 2010 11:53 pm
Esto Avanze pero obtendo un error cuando lo ejecuto, miren:

Tengo la Aplicacion y el modulo que incluyo lo puse de esta forma:
<ns1:informacion id="mod_info">

Arribita en el script de la aplicacion puse una funcion con eventos como me recomendaron:

public function info(event:Event):void
{
ventana.selectedIndex = 1;
serviciodatos.send();
mod_info.repetidor.dataProvider = serviciodatos.lastResult.registros.registro;
}

Que se llama pinchando un boton, donde:
- ventana es el viewstack de la aplicacion
- serviciodatos es un HTTPService de la aplicacion
- mod_info el ID del modulo
- repetidor un repeater que esta en el modulo

En el modulo con el repeater deberia cargar los datos que obtendría del servicio que esta en la App

<mx:Repeater id="repetidor"> y dentro del repeater los datos los recupero en un text asi
<mx:Text text="{String(repetidor.currentItem.Nombre)}"/>

Bueno esto me funciono con una caja de texto en la aplicacion y un texto que lo reflejara en el modulo.
Ahora con el servicio y el repetidor que quiero llenar obtengo este error:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at index/info()[C:\(direccion)\index.mxml:42]
at index/___index_Button1_click()[C:\(direccion)\src\index.mxml:65]

- index es el nombre de la aplicacion.
- (direccion) es la ubicacion donde estan mis archivos.

¿Usteden entienden que es lo que hago mal?

Por Salov

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Abr 2010 05:20 pm
El HTTPService tiene un callback (lo pones en el mismo tag donde lo declaras, es lo que asignes a onResult) en donde accedes a lo que devuelve, no puedes hacerlo directamente después del llamado ya que asincrónica

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Abr 2010 05:56 pm
No entiendo muy bien lo que dices solisarg, no puedes ser mas explicito y mostrarme un ejemplo?

Pero he seguido haciendo cambios, tu mismo me recomendaste usar creatiopolicy=all en un tab que no me funcionaba (en otra consulta del foro, http://foros.cristalab.com/problema-tabnavigator-datagrid-y-formulario-t83146/), y me funciono.

Ahora puse creationpolicy=all en el viestack y en el modulo que pone la informacion en un tab tambien.

Me funciona pero a medias...

Cuando hago click, me carga el modulo vacio, vuelvo a hacer click con el modulo a la vista y recien me carga la información.
Luego si vuelvo a la parte de la aplicacion donde cambio datos, y cambio el dato, me pasa que al volver con el click veo la informacion anterior, vuelvo a hacer click a este boton nuevamente y recien aparece la informacion nueva.

Con los creationPolicy ya no me lanza error, pero igualmente no es la funcionalidad que espero, ya que tengo que hacer dos click en el boton para que cumpla con lo que se quiere y no resulta logico.

Por Salov

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Abr 2010 06:07 pm
Ok, pon la declaración del HTTPService en tu MXML

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Abr 2010 07:28 pm
Cual sería esa declaración?
onResult no existe como declaración de etiqueta, si me sale Result y entonces las comillas, pero que debería hacer aquí apuntar a una función?
Y luego de que me serviría esto, como lo implemento?

Soy relativamente novato en Flex Jorge, tengo mucho que aprender, no entiendo si solo me hablas con terminos como callback y otros y luego me dices una linea de respuesta, eso no es ser explicito, sino todo lo contrario.

Por Salov

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Abr 2010 07:32 pm
Donde dices Result, pon el nombre de la función, ejemplo:

Result="Actualizar(event)"

Luego escribes la función actualizar

Código ActionScript :

function actualizar(evt:ResultEvent){
  mod_info.repetidor.dataProvider = serviciodatos.lastResult.registros.registro;
}


Si lees la entrada de la ayuda para HTTPService, verás que explica result y da algún ejemplo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Abr 2010 08:11 pm
Muchas gracias por la ayuda Jorge

En una primera instancia, me salio un error de desbordamiento de pila, luego lo revise mejor y en la compilacion nueva, funciona correctamente.

Por Salov

20 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.