我的应用程序使用 Flex 4 和 Mate 框架 0.9.1。当经理和视图之间存在映射时,我遇到了 PropertyInjector 被触发两次的问题。
我没有在这里分享原始代码,但它看起来类似于以下内容: 基于事件,更新 MyManager 中的属性(someData)。属性注入器在目标视图 (MyView) 中更新这个新值。问题是 - 当 onDataChanged 被调用并且属性 someData 被更新时,视图中的“set someData”方法被触发了两次。我知道视图只被实例化一次,因为我已经调试了 init 和 creationComplete 事件。MyManager 中的源属性也仅根据跟踪更新一次。
这表明属性注入器被触发了两次。有谁知道在什么条件下会发生这种情况?任何指针将不胜感激!
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>
数据持有者.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;    
    }
}
我的视图.mxml
public function set someData(data:DataHolder):void {
    trace("setSomeData x="+data.x+",y="+data.y+",name="+data.name);
}