2010-05-05 29 views
1

我想: 1)建立動態屬性 2)屬性綁定到標籤的Flex AS3 - 創建動態屬性,然後將控件綁定到它

此爲「密封性能的偉大工程「,但對於動態屬性,並不會觸發任何事件。動態屬性暗示不是可綁定?

var myObj:MyType = new MyType(); // MyType is dynamic 
myObj["myDynamicPropertyName"] = "initialized"; 

BindingUtils.bindProperty(myLabel, "data", myObj, repeatedLabel.name); // myLabel now displays "initialized" 

myObj["myDynamicPropertyName"] = "changed"; // myLabel still displays "initialized", it should say "changed" !!! 
+0

編譯器會給你什麼警告嗎?它至少對某些事情(例如綁定到一個數組的長度)。 – mwilson 2010-05-05 21:49:50

回答

0

嘗試BindingUtils.bindProperty(myLabel, 「數據」,MyObj中,{名稱:repeatedLabel.name,吸氣劑:功能(主機){返回主機[repeatedLabel.name];}});

動態屬性不會出現在describeType,顯然系統無法綁定到它們。

如果您的類型尚未擴展,可以擴展Proxy並覆蓋setProperty函數以分派數據更改事件。如果它已經擴展了某些東西......你將不得不找出另一個解決方法。

1

mwilson:沒有編譯器警告

科里斯Petosky:我試過了前面,該方法被稱爲第一次我設置的動態屬性,而不是第二。

+0

編輯我的答案。 – 2010-05-05 22:42:49

+0

好的,謝謝科裏,今天我會嘗試一下,併發布我的結果。 – user333903 2010-05-06 14:27:17

0

你可以將你的對象包裝成一個mx.utils.ObjectProxy,然後使用這個包裝來放置你的監聽器。但是,您也應該使用此包裝來代替原始對象來更新這些屬性的值,以便激發正確的綁定事件。

相關問題