Tenir compte du changement de propriété d'une vue dans un autre Voir en utilisant une classe comme intermédiaire
-
09-10-2019 - |
Question
J'ai soumis un fil qui était (après l'avoir lu à nouveau) tout à fait mal formulés. Ceci est en fait ce que je voulais savoir:
Dans une application Flex à l'aide MATE supposons que nous avons une vue appelée View.mxml avec une propriété appelée ViewProp et une classe appelée ClassManager avec un ClassProp de propriété. Supposons que nous ayons une autre vue appelée SecondView.mxml avec une propriété SecondProp.
Est-il possible de définir une certaine façon les éléments suivants: chaque fois que le ViewProp change (en View.mxml) le ClassProp est également modifiée en ClassManager, ce qui reflète ses changements dans Secondview.mxml dans la propriété SecondProp!
J'espère que cette fois-ci avoir décrit correctement!
Merci à l'avance
La solution
Ceci est un peu différent de votre première question.
Voir les classes ne doivent pas accéder aux classes de modèle directement, et à cause de ce que la classe View doit envoyer un événement pour changer la classe modèle.
1.) Vous devez définir une sorte de nouvel événement
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.) Lorsque vous avez modifié le ViewProp dans View.mxml, vous devez envoyer un événement
dispatchEvent(new ViewPropIsChangedEvent(ViewPropIsChangedEvent.SET_NEW_VALUE, theNewValue))
3.) Dans le eventmap vous devez gérer l'événement
</EventHandlers type="{ViewPropIsChangedEvent.SET_NEW_VALUE}">
<PropertySetter generator="{ClassManager}"
targetKey="ClassProp"
source="{event.value}"/>
</EventHandlers>
4.) En l'Secondview.SecondProp à ClassManager.ClassProp ModelMap vous devez déjà lier
<Injectors target="{Secondview}">
<PropertyInjector targetKey="SecondProp"
source="{ClassManager}"
sourceKey="ClassProp"/>
</Injectors>
Autres conseils
Que diriez-vous de cette façon:
Lorsque le changement ViewProp ou ClassProp, cette propriété Transmet un événement et un EventListener est ajouté dans Secondview.mxml pour modifier la propriété SecondProp.