创建完成后,我的父组件执行一个“init”函数,该函数只是在子组件中设置公共可绑定变量。我希望子组件观察这些变量并在设置后使用它们。但是,由于某种原因,ChangeWatcher并没有在变量发生变化时触发。以下是我的代码;任何人看到有什么问题?谢谢。ChangeWatcher未触发绑定属性更改
父组件
private function init():void
{
userInfo.user = new User("Tom");
}
子组件 - “用户信息”
...
[Bindable] public var user:Object;
private function init():void
{
ChangeWatcher.watch(this, "user", function(evt:PropertyChangeEvent):void
{
Alert.show(evt.property);
}
}
@Flextras:感谢您的解释。你的建议完全达到了我之后的目标。但是,为什么第一种方法比第一种更好呢? – tommac 2010-10-01 17:52:51
@tommac第二种方法更好,因为它允许您同时协调不同的属性更改,并合并实现更改的代码。这个简单的例子中的需求并不明显。但是,如果我采取更复杂的组件,例如Flextras日历,我可以更好地演示。三个属性控制显示哪个月:displayedMonth,displayedDate和displayedYear。所有更改时都执行类似的代码。通过使用组件lifeCycle,如果有人连续更改全部3个组件,则组件只更新一次而不是三次。合理? – JeffryHouser 2010-10-01 19:32:43
@Flextras:从你的例子中,我概念地理解了使用第二种方法的区别和好处。这样说,我很好奇,看到它的实施。你知道我在哪里可以找到一个示例实现? – tommac 2010-10-01 23:34:02