Tenir compte du changement de propriété d'une vue dans un autre Voir en utilisant une classe comme intermédiaire

StackOverflow https://stackoverflow.com/questions/4644379

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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top