这可能吗?像.observes('_data')
这样的东西,但不是。
用例是,我有一个Decays
mixin,其中有一些CP表示自模型更新以来已经过了多长时间。我希望这些CP能够更新,如果任何模型的attrs已经改变。 isDirty
也不起作用,因为我的用例使用store.push
来更新模型。
答案 0 :(得分:1)
我认为没有内置的方法可以做到,但制作一个并不是很困难。只需为所有模型创建基类并覆盖set
函数。像这样:
var BaseModel = DS.Model.extend({
set: function(keyName, value) {
var ret = this._super.apply(this, arguments);
var attributes = Ember.get(this.constructor, 'attributes');
if (attributes[keyName]) {
this.trigger('attributeChanged');
}
return ret;
}
});
然后,您可以监听对此类属性的更改:
model.on('attributeChanged', function() {});
我认为你甚至可以在控制器或类似对象的情况下做这样的事情(虽然我还没有测试过):
Controller.extend(Ember.Evented, {
modelPropertyChanged: function() {
}.on('model.attributeChanged')
});