^M Comunicación entre componentes/modulos utilizando Singleton | Andrés Villagrán Placencia

Comunicación entre componentes/modulos utilizando Singleton

En un post anterior (y muy antiguo) comentaba que se podía utilizar Application.application para comunicarse con la aplicación principal desde un módulo, si bien es cierto esta misma operación se puede realizar a través de eventos, lo cual sería la forma más limpia de hacerlo, hay otra, la cual sería "sucia" pero rápida que es utilizando Singleton.

Lo primero es crear esta clase, como ejemplo:

Util.as

  1. package {
  2. public class Util {
  3. public var variableTemporal:Object;
  4. private static var instance:Util;
  5.  
  6. public static function getInstance():Util {
  7. if(instance == null) {
  8. instance = new Util();
  9. }
  10. return instance;
  11. }
  12. }
  13. }

Esta clase permitirá almacenar en la variable "variableTemporal" los objetos que queramos almacenar y acceder desde cualquier componente/modulo, obviamente en vez de utilizar una variable publica, podemos crear funciones setter/getter.

Luego, debemos instanciar la clase en la aplicación principal:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. creationComplete="creationCompleteHandler(event)">
  6. <fx:Script>
  7. <![CDATA[
  8. import mx.events.FlexEvent;
  9.  
  10. protected function creationCompleteHandler(event:FlexEvent):void {
  11. Util.getInstance();
  12.  
  13. // Guardo en la variableTemporal
  14. // un valor para hacer la prueba
  15. Util.getInstance().variableTemporal = {prueba: 'Hola'};
  16.  
  17. }
  18. ]]>
  19. </fx:Script>
  20. </s:Application>
  21.  

Luego de esto, ya podemos utilizar nuestra clase desde cualquier componente o modulo, por ejemplo:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. xmlns:mx="library://ns.adobe.com/flex/halo"
  6. creationComplete="init()">
  7.  
  8. <fx:Script>
  9. <![CDATA[
  10. private function init():void {
  11. trace("Valor variableTemporal:" + Util.getInstance().variableTemporal.prueba);
  12. }
  13. ]]>
  14. </fx:Script>
  15. </s:Group>
  16.  

Ojalá les sirva de ayuda 😉

Tags: , , ,

Thursday, January 28th, 2010 Flex, Uncategorized

8 Comments to Comunicación entre componentes/modulos utilizando Singleton

  1. Hola andres, tengo un caso en el que necesito asignar el contenido de una variable en otra que esta en el componente padre. Se como hacer el caso contrario, desde el padre asignar un valor a una variable del componente hijo. Podrias ayudarme? gracias

  2. petuh on April 22nd, 2010
  3. Gracias. Un buen ejemplo clarificador.

    petuh: o no has leido el artículo o no lo has entendido.

  4. Juan on May 18th, 2010
  5. Thank you.. it’s the reason I came to the site,lucy

  6. Quavario on May 19th, 2010
  7. Estimados, excelente solución. Después de ver varias formas de solucionar el paso de parámetros entre SWF, está solución expuesta aquí me funcionó. Gracias.

  8. Eduardo Navea on October 18th, 2010
  9. Muchas gracias por la clase, me fue de utilidad. Al igual que muchas otros artículos de esta excelente web.

  10. Yerson on December 22nd, 2010
  11. Bueno estuve haciendo unas pruebas y encontré una forma pues válida para mi:

    1 – Creo una variable publica en el modulo hijo.
    2 – Despacho un evento desde el modulo hijo y luego capturo la información de esa variable con el evento y target.la_variable
    3 – Se aplica modulo.la_variable desde el Application para el sentido inverso

    Espero que le sirva a alguien.

  12. Yerson on December 22nd, 2010
  13. hola muy bueno el articulo pero tengo una duda, se podria realizar los mismo o algo similar usando componentes module y no application para pasar parametros de un formulario a otro.

  14. hilbert on March 5th, 2011
  15. It has not till hell freezes over been easier
    to opt between the transportation services, as all customer opinions and testimonials are gathered in ditty categorize fitted you to pick the best.
    Escape bad je sais quoi and as a conclude inadequate endure
    by consulting any transmission website reviews.
    Unreservedly written testimonials choice influence you including the dispose of of
    selecting the entire and purely change checking
    that last will and testament fit your needs.

  16. get me googled on September 22nd, 2017

Leave a comment