私のアプリケーションは、Flex 4 と Mate フレームワーク 0.9.1 を使用しています。マネージャーとビューの間にマッピングがある場合、PropertyInjector が 2 回起動されるという問題に直面しています。
元のコードはここでは共有しませんが、次のようになります。イベントに基づいて、MyManager のプロパティ (someData) が更新されます。プロパティ インジェクターは、ターゲット ビュー (MyView) でこの新しい値を更新します。問題は、onDataChanged が呼び出され、プロパティ someData が更新されると、ビュー内のメソッド「set someData」が 2 回起動されることです。init イベントと creationComplete イベントをデバッグしたので、ビューが 1 回だけインスタンス化されることがわかっています。MyManager のソース プロパティも、トレースに従って 1 回だけ更新されます。
これは、プロパティ インジェクタが 2 回起動されたことを示します。これがどのような条件下で発生する可能性があるか、誰にもわかりますか?任意のポインタをいただければ幸いです!
MyEventMap.mxml
<EventHandlers type="{DataChangedEvent.GET}" debug="true">
<MethodInvoker generator="{MyManager}" method="onDataChanged"
arguments="{[event.x,event.y,event.name]}">
</MethodInvoker>
</EventHandlers>
<Injectors target="{MyView}" debug="true">
<PropertyInjector targetKey="someData" source="{MyManager}"
sourceKey="someData">
</PropertyInjector>
</Injectors>
DataHolder.as
public class DataHolder
{
public function DataHolder()
{
}
public var x:Number;
public var y:Number;
public var name:String;
}
MyManager.as
public class MyManager extends EventDispatcher
{
....
[Bindable] public var someData:DataHolder;
public function onDataChanged(x:Number,y:Number,name:String):void{
trace("dataChanged");
var temp:DataHolder = new DataHolder();
temp.name=name;
temp.x=x;
temp.y=y;
someData = temp;
}
}
MyView.mxml
public function set someData(data:DataHolder):void {
trace("setSomeData x="+data.x+",y="+data.y+",name="+data.name);
}