在Flex中绑定XML属性

时间:2010-09-14 08:10:06

标签: xml flex binding

我在Model类中有这个变量:

[Bindable]
public var someXml:XML;

我已经使用BindingUtils在XML发生变化时收到通知:

BindingUtils.bindSetter(onChange, Model.getInstance(), "someXml");

private function onChange(value:Object):void {
    // do something
}

当我将XML分配给变量时会触发函数onChange,但是当我更改XML的某些属性时却不会触发:

Model.getInstance().someXml.@attr = "newValue";

为什么?

2 个答案:

答案 0 :(得分:2)

因为XML不是EventDispatcher,因此在内容更改时不会调度Change Events。它直接从Object下降,因此没有EventDispatcher。

答案 1 :(得分:0)

查看XMLNotifier class

" ...用于观察XML和XMLList对象的更改。这些对象不是EventDispatcher,因此如果多个元素想要监视更改,则需要通过此机制。调用watchXML(),传入您传递给XML.notification的相同通知函数。使用unwatchXML()删除该通知。"

这是感兴趣的两个功能,我认为它们是自我解释的。