クラスを中級として使用して、あるビューから別のビューへのプロパティの変更を反映する
-
09-10-2019 - |
質問
私は提出しました スレッド これは(もう一度読んだ後)まったく間違った定式化でした。これは実際に私が知りたかったことです:
MATEを使用したFlexアプリケーションでは、View.mxmlと呼ばれるViewPropと呼ばれるView.mxmlと呼ばれるViewと、プロパティClassPropを持つClassManagerと呼ばれるクラスがあるとします。 Property SecondPropを備えたSecondView.mxmlという別のビューがあるとします。
何らかの形で次のように定義することは可能ですか:ViewPropが(view.mxmlで)変更されるたびに、クラスプロップもClassmanagerで変更されます。
今回はそれを正しく説明してくれることを願っています!
前もって感謝します
解決
これはあなたの最初の質問と少し異なります。
ビュークラスはモデルクラスに直接アクセスしてはなりません。そのため、ビュークラスはモデルクラスを変更するためにイベントを発送する必要があります。
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.mxmlでViewPropを変更したら、イベントを発送する必要があります
dispatchEvent(new ViewPropIsChangedEvent(ViewPropIsChangedEvent.SET_NEW_VALUE, theNewValue))
3.)イベントマップでは、イベントを処理する必要があります
</EventHandlers type="{ViewPropIsChangedEvent.SET_NEW_VALUE}">
<PropertySetter generator="{ClassManager}"
targetKey="ClassProp"
source="{event.value}"/>
</EventHandlers>
4.)モデルマップでは、secondview.secondpropをclassmanager.classpropに既にバインドする必要があります
<Injectors target="{Secondview}">
<PropertyInjector targetKey="SecondProp"
source="{ClassManager}"
sourceKey="ClassProp"/>
</Injectors>
他のヒント
このようにしてどうですか:
ViewPropまたはClassPropが変更されると、このプロパティはイベントを発送し、EventListenerがSecondView.mxmlに追加され、プロパティSecondPropを変更します。