Riflettere modifica della proprietà da una vista all'altra Vista utilizzando una classe come intermedio

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

Domanda

Ho fatto presentare una filo che era (dopo aver letto di nuovo) totalmente sbagliato formulati. Questo è in realtà quello che volevo sapere:

In un'applicazione Flex utilizza MATE supponiamo di avere una visione chiamato View.mxml con una proprietà chiamata ViewProp e una classe chiamata ClassManager con un ClassProp proprietà. Supponiamo di avere un altro vista chiamata SecondView.mxml con una proprietà SecondProp.

E 'possibile definire in qualche modo seguente: ogni volta che il ViewProp cambia (in View.mxml) il ClassProp è cambiato anche in ClassManager, che a sua volta riflette le sue variazioni di Secondview.mxml in immobili SecondProp?!

Spero che questo momento di aver descritto in modo corretto!

Grazie in anticipo

È stato utile?

Soluzione

Questo è un po 'diverso dalla tua prima domanda.

Visualizza le classi non devono accedere al classi del modello direttamente, e per questo la classe vista deve inviare un evento per modificare la classe del modello.

1.) È necessario definire una sorta di nuovo evento

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). Quando è stata modificata la ViewProp in View.mxml, è necessario inviare un evento

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

3). Nel EventMap è necessario gestire l'evento

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

4). Nel ModelMap si deve già legano il Secondview.SecondProp a ClassManager.ClassProp

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

Altri suggerimenti

Come su in questo modo:

Quando il ViewProp o il cambiamento ClassProp, questa struttura a inviare un evento e viene aggiunto un EventListener in Secondview.mxml per modificare la proprietà SecondProp.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top