Отражение изменения свойства из одного представления в другое представление с использованием класса в качестве промежуточного - PullRequest
2 голосов
/ 10 января 2011

Я отправил ветку , которая была (после прочтения еще раз) совершенно неверно сформулирована. Это на самом деле то, что я хотел знать:

В приложении Flex, использующем MATE, предположим, что у нас есть представление View.mxml со свойством ViewProp и класс ClassManager со свойством ClassProp. Предположим, у нас есть другое представление с именем SecondView.mxml со свойством SecondProp.

Можно ли как-то определить следующее: всякий раз, когда ViewProp изменяется (в View.mxml), ClassProp также изменяется в ClassManager, что, в свою очередь, отражает его изменения в Secondview.mxml в свойстве SecondProp?!

Надеюсь, на этот раз все правильно описано!

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 10 января 2011

Это немного отличается от вашего первого вопроса.

Классы представления НЕ ДОЛЖНЫ иметь прямой доступ к классам модели, и поэтому класс View должен отправлять событие для изменения класса модели.

1.) Вы должны определить какое-то новое событие

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.) Когда вы изменили ViewProp в View.mxml, вы должны отправить событие

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

3..) В EventMap вы должны обработать событие

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

4.) В ModelMap вы уже должны привязать Secondview.SecondProp к ClassManager.ClassProp

<Injectors target="{Secondview}">
   <PropertyInjector targetKey="SecondProp" 
                     source="{ClassManager}"
                     sourceKey="ClassProp"/>
</Injectors>
0 голосов
/ 10 января 2011

Как насчет этого:

При изменении ViewProp или ClassProp это свойство отправляет событие, и в Secondview.mxml добавляется обработчик событий для изменения свойства SecondProp.

...