Comunidad de diseño web y desarrollo en internet online

Bindable a un Objeto.. ¿¿¿???

Citar            
MensajeEscrito el 11 May 2008 04:49 pm
Hola :roll: me estoy volviendo loco con alagunas cosas de flex jajaj pero ya voy a aprender..
me hace acordar cuando pase de AS2 a AS3 jajaj al principio me volvi loco bastante pero bueno..
ahora tengo este problema..

Tengo un objeto que lo uso para guardar los textos de la aplicacion en diferentes lenguajes.
entonses lo hago asi.

Código :

[Bindable]
public var txts:Object;


luego en una funcion lo lleno con los textos dependiendo del lenguaje que se selecciono

Código :

for each(var txt:XML in lngInfo[i].textos.elements()){
   txts[txt.attribute("id")]=txt.attribute("txt");
}

hasta ahi todo bien porque puedo acceder al objeto desde el ActionScript bien. siempre lo hise asi y funciona..

pero cuando se lo quiero poner a un Componente del Flex (que por lo que dice los libros es asi) :roll:

Código :

<mx:Text text="{txts.user}" x="151" y="215" width="239"/>

(donde user es un id de textos que si le haco Trace(txts.user) me devuelve "Usuario")

pero cuando compilo me tira esta advertenvia!!! :twisted:

Código :

warning: unable to bind to property 'user' on class 'Object' (class is not an IEventDispatcher)

por lo que no le pone el texto que corresponde a el componente.. :cry:

la verdad no se masque hacer.
ahora voy a intentar hacer un Array a ver si anda en ves de un Object..
pero bueno.. saludos.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

msie7
Citar            
MensajeEscrito el 11 May 2008 07:41 pm
Crea una clase que sea un value object (una clase que contiene solamente propiedades y sus valores) y úsala ella en vez de object. A ella sí le puedes poner el tag [Bindable], y funcionará automáticamente:

Código :


package xxx.xxx.xxx {
[Bindable]
public class TextsVO {
public var user:String;
public var ....
...
public function TextsVO()
{
}
}
}


Y en tu código, donde declaras la variable como Object, la declaras como TextVO y listo.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 12 May 2008 01:07 am
mmm no entendi muy bien.
yo tengo varios idiomas para la aplicacion que se cargan de un xml. donde guardo esa info en un Objeto. lamentablemente al parecer no se puede en flex :crap:
y no entendi bien eso de la clase porque veo que declaras las variables dentro ya no seria tan dinamivo el seleccionar varios idiomas. mmm
podrias dar un simple ejemplo de como seria? ^^ te lo agradeceria.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

msie7
Citar            
MensajeEscrito el 12 May 2008 02:43 am
Value Object, en caso de datos se suele llamar también DTO (Data Transfer Object), son clases con propiedades simples para mover info y hacerla "bindable" Aquí un ejemplito quie uso para un formulario:

Código :

package com.flashdb.dto
{
   import flash.net.URLVariables;
   
   [Bindable]
   public class Post extends Object
   {
      public var alias:String;
      public var city:String;
      public var country:String;            
      public var email:String;
      public var msg:String
      
      public function Post(obj:Object){
         if(obj.alias) alias = obj.alias
         if(obj.city) city = obj.city
         if(obj.country) country = obj.country
         if(obj.email) email = obj.email
         if(obj.msg) msg = obj.msg      
      }      
   }
}


Con la simple declaración de propiedades públicas ya puedes usarlo com objeto de binding

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 May 2008 02:34 pm
Pues simplemente no la guardes en un objeto. Crea una clase específica para guardar esas propiedades. No deberías necesitar usar un objeto en ningún punto. Es decir, siguiendo mi ejemplo y suponiendo que en la clase has declarado como variable públicas todas las propiedades que vas a tener del XML:

Código :

[Bindable]
public var txts:TextsVO;

Y el resto lo dejas igual, aparte claro, de importar la clase.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox

 

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