Ember Data's documentation discusses different events in a model instance's lifecycle。
我希望只要模型实例的任何属性发生变化,就会触发didUpdate
事件。但是我的实验没有表现出这种行为。
这是一个JS Bin示例:http://jsbin.com/uziwam/9/edit
在该示例中,您可以看到我在“ren”模型实例上注册处理程序:我为console.log(..)
和didLoad
事件注册处理程序(didUpdate
消息)。
启动代码时,“ren”的didLoad
事件会触发,这是预期的行为。然后,当使用GUI编辑“ren”属性时,不会触发didUpdate
事件。这是(至少对我来说)意想不到的行为。
要让didUpdate
事件触发,我该怎么做?
答案 0 :(得分:3)
有效保存记录时会触发didUpdate
事件,这意味着您必须提交它,并且您的适配器已确认提交。
要提交记录的更改,您可以使用record.get('transaction')。commit()。
请参阅http://jsbin.com/uziwam/11/edit
如果要在属性更改时提交事务,可以在其上放置一个观察者。
App.User = DS.Model.extend({
firstName: DS.attr("string"),
lastName: DS.attr("string"),
firstNameDidChange: function(){
this.get('transaction').commit();
}
});
如果要对每个记录的属性进行概括,您应该可以执行以下操作:
App.User = DS.Model.extend({
firstName: DS.attr("string"),
lastName: DS.attr("string"),
init: function(){
this._super();
this.eachAttribute(function(attributeName){
this.addObserver(attributeName, this, this.commitRecord);
}, this);
}
commitRecord: function(){
this.get('transaction').commit();
}
});