Apache flex 我可以让changeWatcher在附加XML时启动吗?

Apache flex 我可以让changeWatcher在附加XML时启动吗?,apache-flex,actionscript-3,actionscript,flex3,Apache Flex,Actionscript 3,Actionscript,Flex3,所以我需要在我的应用程序中添加一个撤销功能,我发现了这个漂亮的ChangeWatcher类,但它并不是我想要的,我希望有人知道怎么做 ChangeWatcher似乎监视变量引用的分配。所以当我说: myXML = <xml/> 我什么也得不到,即使变量改变了引用,也不会让ChangeWatcher触发函数 那么,有人知道如何让ChangeWatcher了解变量的所有更改吗?ChangeWatcher是一个非常酷的类。但是,除非您试图查看的属性是[可绑定的],否则它不会起作用 如果您

所以我需要在我的应用程序中添加一个撤销功能,我发现了这个漂亮的ChangeWatcher类,但它并不是我想要的,我希望有人知道怎么做

ChangeWatcher似乎监视变量引用的分配。所以当我说:

myXML = <xml/>
我什么也得不到,即使变量改变了引用,也不会让ChangeWatcher触发函数


那么,有人知道如何让ChangeWatcher了解变量的所有更改吗?

ChangeWatcher是一个非常酷的类。但是,除非您试图查看的属性是[可绑定的],否则它不会起作用

如果您的
myXML
变量是可绑定的,那么当您将其设置为XML值时,它将发送一个事件(默认值为
propertyChange
)。ChangeWatcher为已声明的[Bindable]事件向对象添加事件侦听器。它通过获取该变量的可绑定元数据来实现这一点

但是XML类本身没有任何可绑定的内容,因此调用
appendChild
不会发送任何事件,ChangeWatcher也不会工作

根据您的注释进行更新,您只需对XML进行所有更改,然后重置变量即可。这将导致ChangeWatcher注册更新

希望有帮助,
兰斯

如果你的意思是它证实了我的恐惧,那么它确实是:-/,幸运的是,解决方法并不太困难。我创建了一个新的XML变量,将其设置为新XML(myXML),将子变量附加到新变量,然后设置myXML=new XML(新XML变量),而不是直接将子变量附加到myXML。在某些方面,这是可取的,因为它只会对每个函数触发一次更改处理程序,而不是对每个函数触发几次。
myXML.appendChild(thisOtherXMLVar)