我有一个对象"观察者"引用另一个对象:"爸爸"。 "观察"每当'" dad"。
发生变化时,都应该通知我当爸爸的孩子被改变时,它会起作用,但是当爸爸的大孩子被改变时,它就不会起作用。在后一种情况下,我无法让观察者触发。我想嵌套@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('dad.sons.@each.name','dad.sons.@each.sons.@each.name')
})
这是一个jsFiddle,说明了这一点:http://jsfiddle.net/4kUzr/1/
答案 0 :(得分:0)
您没有详细概述您的用例,但从对象建模的角度来看,我怀疑是这样工作的:
App.Person = DS.Model.extend({
dad: DS.belongsTo('App.Person'),
sons: DS.hasMany('App.Person'),
name: null,
nameObserver : function(){
var dad = this.get("dad");
// do some logic
// hand it afterwards to the dad of this person
if(dad)
dad.nameObserver()
}.observes("name")
});
所以只需 1个班级而不是多个班级,我建立了亲子关系。