Reflejar el cambio de propiedad de una vista a otra vista utilizando una clase como intermedio
-
09-10-2019 - |
Pregunta
Lo hice presentar un hilo que fue (después de leer de nuevo) totalmente equivocado formulados. Esto es en realidad lo que quería saber:
En una aplicación Flex utilizando MATE supongamos que tenemos una vista llamada View.mxml con una propiedad llamada ViewProp y una clase llamada ClassManager con un ClassProp propiedad. Supongamos que tenemos otra vista llamada SecondView.mxml con una propiedad SecondProp.
¿Es posible definir de alguna manera lo siguiente: siempre que el ViewProp cambia (en View.mxml) la ClassProp también se cambia en ClassManager, que a su vez refleja sus cambios en Secondview.mxml en propiedad SecondProp?!
Espero que esta vez a haber descrito correctamente!
Gracias de antemano
Solución
Esto es un poco diferente a la primera pregunta.
Ver las clases no debe tener acceso a las clases del modelo directamente, y debido a que la clase View debe enviar un evento para cambiar la clase del modelo.
1.) Debe definir algún tipo de evento nuevo
public class ViewPropIsChangedEvent extends Event
{
public static const SET_NEW_VALUE:String = "theNewValue";
private var _value:Object;
public ViewPropIsChangedEvent(type:String, value:Object, bubbling:Boolean=true, cancelable:Boolean=false)
{
super(type,bubbling,cancelable);
_value = value;
}
public function get value():Object
{
return _value;
}
}
2.) Cuando se ha cambiado el ViewProp en View.mxml, debe enviar un evento
dispatchEvent(new ViewPropIsChangedEvent(ViewPropIsChangedEvent.SET_NEW_VALUE, theNewValue))
3). En el eventmap debe controlar el evento
</EventHandlers type="{ViewPropIsChangedEvent.SET_NEW_VALUE}">
<PropertySetter generator="{ClassManager}"
targetKey="ClassProp"
source="{event.value}"/>
</EventHandlers>
4.) En el ModelMap que ya debe vincular los Secondview.SecondProp a ClassManager.ClassProp
<Injectors target="{Secondview}">
<PropertyInjector targetKey="SecondProp"
source="{ClassManager}"
sourceKey="ClassProp"/>
</Injectors>
Otros consejos
¿Qué hay de la siguiente manera:
Cuando el ViewProp o el cambio ClassProp, esta propiedad distribuir un evento y se añade una EventListener en Secondview.mxml para modificar la propiedad SecondProp.