2011-01-10 68 views
2

我確實提交了一個thread這是(在再次閱讀後)完全錯誤的公式化。這實際上是我想知道的:從一個視圖反射屬性更改爲另一個視圖使用一個類作爲中間

在使用MATE的Flex應用程序中,假設我們有一個名爲View.mxml的視圖,其中包含一個名爲ViewProp的屬性和一個名爲ClassManager且具有屬性ClassProp的類。假設我們有另一個名爲SecondView.mxml並具有SecondProp屬性的視圖。

是否有可能以某種方式定義以下內容:每當ViewProp更改(在View.mxml中)時,ClassProp在ClassManager中也發生了變化,這反過來反映了它在屬性SecondProp中的Secondview.mxml中的更改?

我希望這次能正確描述它!

在此先感謝

+0

你應該在你的問題中提到你使用Mate – Ryan 2011-01-10 10:34:15

+0

謝謝你提及!我將編輯以反映這一點(至少我做了正確的標記!!! :))) – 2011-01-10 16:05:05

回答

0

這與你的第一個問題有點不同。

查看類不能直接訪問模型類,因此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)當你在View.mxml改變了ViewProp,你必須分派事件

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

3)在EventMap你必須處理在ModelMap您必須已經綁定到Secondview.SecondProp CLA事件

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

4) ssManager.ClassProp

<Injectors target="{Secondview}"> 
    <PropertyInjector targetKey="SecondProp" 
        source="{ClassManager}" 
        sourceKey="ClassProp"/> 
</Injectors> 
0

怎麼樣在這樣:

當ViewProp或ClassProp變化,這個屬性調度的事件和事件偵聽在Secondview.mxml被添加到修改屬性SecondProp。

+0

這不違反使用MATE的原則嗎?不應該一切都集中嗎? (在地圖文件中)?只是問...我是新來的Flex和MATE – 2011-01-10 08:16:47

相關問題