創建完成後,我的父組件執行一個「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