Flex AS3 - 创建动态属性,然后将控件绑定到它

时间:2010-05-05 21:46:01

标签: flex actionscript-3 flex3

我想: 1)创建动态属性 2)将该属性绑定到标签

这适用于“密封属性”,但对于动态属性,似乎没有触发任何事件。动态属性 是不是 可绑定?

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" !!!

3 个答案:

答案 0 :(得分:1)

mwilson:没有编译器警告

Cory Petosky:我之前尝试过,首次设置动态属性时调用该方法,但不是第二次。

答案 1 :(得分:0)

尝试BindingUtils.bindProperty(myLabel,“data”,myObj,{name:repeatedLabel.name,getter:function(host){return host [repeatedLabel.name];}}); < / p>

动态属性不会出现在describeType中,因此显然系统无法绑定到它们。

如果您的类型尚未扩展,则可以扩展Proxy并覆盖setProperty函数以分派数据更改事件。如果它已经扩展了某些东西......你将不得不找出另一种解决方法。

答案 2 :(得分:0)

您可以将对象包装到mx.utils.ObjectProxy中,然后使用此包装器放置您的侦听器。但是,您还应该使用此包装器而不是原始对象来更新这些属性的值,以便触发正确的绑定事件。