我想: 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" !!!
答案 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中,然后使用此包装器放置您的侦听器。但是,您还应该使用此包装器而不是原始对象来更新这些属性的值,以便触发正确的绑定事件。