Reflektieren Eigenschaft Wechsel von einer Ansicht in einer anderen Ansicht eine Klasse als Zwischen mit

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

Frage

Ich lege habe eine Thread die so formuliert war (nach erneutem Lesen) völlig falsch. Das ist eigentlich das, was ich wissen wollte:

In einer Flex-Anwendung mit MATE nehme an, wir haben eine Ansicht namens View.mxml mit einer Eigenschaft namens ViewProp und eine Klasse namens ClassManager mit einer Eigenschaft ClassProp. Angenommen, wir haben eine andere Ansicht namens SecondView.mxml mit einer Eigenschaft SecondProp.

Ist es möglich, irgendwie folgendes zu definieren: wann immer die ViewProp ändert (in View.mxml) der ClassProp auch in ClassManager geändert wird, was wiederum ihre Veränderungen in Secondview.mxml in Immobilien spiegelt SecondProp?!

Ich hoffe, dieses Mal ist es richtig beschrieben haben!

Vielen Dank im Voraus

War es hilfreich?

Lösung

Dies ist ein bisschen anders als die erste Frage.

Ansicht Klassen müssen Zugriff nicht die Modellklassen direkt, und aus diesem Grunde die View-Klasse ein -Ereignis muß die Modellklasse zu ändern.

1.) Sie müssen eine Art neuen Ereignis definieren

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.) Wenn Sie die ViewProp in View.mxml geändert haben, müssen Sie ein Ereignis

Versand
dispatchEvent(new ViewPropIsChangedEvent(ViewPropIsChangedEvent.SET_NEW_VALUE, theNewValue))

3). Im EventMap Sie das Ereignis

handhaben müssen
</EventHandlers type="{ViewPropIsChangedEvent.SET_NEW_VALUE}"> 
  <PropertySetter generator="{ClassManager}" 
                  targetKey="ClassProp" 
                  source="{event.value}"/>
</EventHandlers>

4). In der ModelMap müssen Sie bereits binden die Secondview.SecondProp zu ClassManager.ClassProp

<Injectors target="{Secondview}">
   <PropertyInjector targetKey="SecondProp" 
                     source="{ClassManager}"
                     sourceKey="ClassProp"/>
</Injectors>

Andere Tipps

How about in this way:

When the ViewProp or ClassProp change, this property dispatch an event and an eventlistener is added in Secondview.mxml to modify the property SecondProp.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top