所以我要求在我的应用程序中添加一个撤销功能,我发现了这个漂亮的ChangeWatcher类,但它并没有完全符合我的要求,我希望有人知道如何。
ChangeWatcher似乎监视变量引用的赋值。所以当我说:
myXML = <xml/>
它开启它的功能就好了,花花公子,但当我说:
myXML.appendChild(thisOtherXMLVar)
我什么都没得到,即使变量改变引用也没有,所以ChangeWatcher不会触发该函数。
那么有谁知道如何让ChangeWatcher接收变量的所有变化?
答案 0 :(得分:1)
ChangeWatcher是一个非常酷的课程。但是,除非您尝试观看的属性发生变化,否则它不会起作用。
如果myXML
变量是Bindable,那么当您将其设置为XML值时,它将调度一个事件(默认为propertyChange
)。 ChangeWatcher为该对象添加一个事件监听器,用于声明任何[Bindable]事件。它通过获取该变量的Bindable元数据来实现此目的。
但是XML类本身没有任何Bindable,所以调用appendChild
不会调度任何事件,而ChangeWatcher也不会工作。
根据您的评论进行更新,您可以只对XML进行所有更改,然后重置变量。然后,这将导致ChangeWatcher注册更新。
希望有所帮助, 兰斯