在 Ember.js 中,是否有一种添加观察者的好方法来观察子类实例的所有变化Ember.Object
?
即(咖啡脚本)
Bat = Ember.Object.extend
name: null
age: null
hank = Bat.create
name: 'Hank'
age: 2
#Something like this
hank.addObserverToAll myClass, 'handleChange'
在 Ember.js 中,是否有一种添加观察者的好方法来观察子类实例的所有变化Ember.Object
?
即(咖啡脚本)
Bat = Ember.Object.extend
name: null
age: null
hank = Bat.create
name: 'Hank'
age: 2
#Something like this
hank.addObserverToAll myClass, 'handleChange'
这是一个实现:http: //jsfiddle.net/Sly7/GMwCu/
App = Ember.Application.create();
App.WatchedObject = Ember.Object.extend({
firstProp: null,
secondProp: "bar",
init: function(){
this._super();
var self = this;
Ember.keys(this).forEach(function(key){
if(Ember.typeOf(self.get(key)) !== 'function'){
self.addObserver(key, function(){
console.log(self.get(key));
});
}
});
}
});
App.watched = App.WatchedObject.create({
firstProp:"foo",
plop: function(){},
thirdProp: 'far'
});
App.watched.set('firstProp', 'trigObserver');
App.watched.set('secondProp', 'doesNotTrigObserver');
App.watched.set('thirdProp', 'alsoTrigObserver');
</p>
正如你所看到的,它只处理属性,而不是函数(我认为这是你想要的)。
您还可以意识到它仅适用于传递给create()
方法的属性,而不适用于类定义中指定的属性(即 using extend
)。