1
我有一個引用另一個對象的對象「監視器」:「爸爸」。每當「父親」發生某些變化時,都應通知「看守人」。Ember JS:觀察對象後代的變化
它適用於父親的孩子改變時,但不是當父親的大孩子被改變時。在後一種情況下,我無法讓觀察員觸發。我猜嵌套的@each可能是錯誤的,但我不知道如何做到這一點。
當爸爸或他的後代中的某些內容被修改時,是否可以簡單地向觀察者發送通知通知?
App.Dad = DS.Model.extend({
sons: DS.hasMany('App.Son'),
name: null
})
App.Son = DS.Model.extend({
dad: DS.belongsTo('App.Dad'),
sons: DS.hasMany('App.GrandSon'),
name: null
})
App.GrandSon = DS.Model.extend({
dad: DS.belongsTo('App.Son'),
name: null
})
App.Watcher = Ember.Object.extend({
dad: null, // will be set later
dadChanged: function(){
// Fires if a son is changed, but not
// if a grand son is changed
}.observes('[email protected]','[email protected]@each.name')
})
CF A的jsfiddle說明這一點:http://jsfiddle.net/4kUzr/1/
感謝mavilein。我寫的例子只是一個非常簡單的例子,正如你所指出的那樣 - 並不反映我的用例(具體)。後代可能實際上是完全不同的類型。通用的問題是:是否有一種簡單的方法來通知所有的祖先何時後裔發生變化(即「遍歷」關聯)?我不確定你的解決方案是否適用於一般情況... – PJC 2013-03-13 16:22:26