0

我有一个 MXML 对象,我希望它在每次更新其属性之一时触发其绑定:

<fx:Object id="myObject">
    <fx:prop1>{myButton.selected}</fx:prop1>
    <fx:prop2>value</fx:prop2>
    <fx:prop3>value</fx:prop3>
</fx:Object>

<Button id="myButton" toggle="true" />
<myComponent obj="{myObject}" />

实现这一目标的最佳方法是什么?

4

2 回答 2

0

你不能真正做你想做的事。我知道如何描述它的最好方法是绑定只有一个层次。而您正在尝试使绑定​​更深两个级别。

这段代码:

<myComponent obj="{myObject}" />

告诉 Flex 查看变量 myObject 并且每当 myObject 更改时,myComponent 上的 obj 属性也将更改。查看 myObject 指向的变量。

这段代码:

<fx:prop1>{myButton.selected}</fx:prop1>

更改 myObject 上的属性;但不会改变 myObject。myObject 仍然指向相同的内存空间/变量空间。

每当 myObject 上的属性发生变化时,让 myComponent 发生变化;我会使用完全不同的方法。我会将 myObject 创建为 ActionScript 类。每当属性更改时,使用 get/set 属性和调度事件。

在 myComponent 内部,您可以将 obj 实现为 get/set 方法。在您的 set 方法中,将事件侦听器添加到您在 myObject 中设置的属性更改。在您的事件侦听器方法中;实施适当的改变。

与您正在做的事情相比,这不是微不足道的改变;但这也不应该太难。

于 2012-10-30T15:58:56.280 回答
0

使用ObjectProxy

示例:使用 Flex ObjectProxy 类检测对象的更改

private var object:Object = {};
private var objectProxy:ObjectProxy;

objectProxy = new ObjectProxy(object);
objectProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateChange);

然后,直接对代理进行分配:

objectProxy.name = "My Object";
于 2012-10-30T16:00:20.510 回答