2

私は(もう一度読んだ後)完全に間違ったスレッドを提出しました。これは実際に私が知りたかったことです:

MATE を使用する Flex アプリケーションで、ViewProp というプロパティを持つ View.mxml というビューと、ClassProp プロパティを持つ ClassManager というクラスがあるとします。プロパティ SecondProp を持つ SecondView.mxml という別のビューがあるとします。

次のように定義することは可能ですか: ViewProp が (View.mxml で) 変更されるたびに、ClassProp も ClassManager で変更され、その変更が SecondProp プロパティの Secondview.mxml に反映されますか?!

今回は正しく説明できていることを願っています!

前もって感謝します

4

2 に答える 2

0

これは最初の質問とは少し異なります。

ビュー クラスはモデル クラスに直接アクセスしてはなりません。そのため、ビュー クラスはモデル クラスを変更するイベントを送出する必要があります。

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.) View.mxml で ViewProp を変更した場合、イベントをディスパッチする必要があります。

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>
于 2011-01-10T08:30:45.837 に答える
0

こんな風にいかがですか:

ViewProp または ClassProp が変更されると、このプロパティはイベントを送出します。Secondview.mxml にイベント リスナーが追加され、プロパティ SecondProp が変更されます。

于 2011-01-10T07:20:16.670 に答える