我正在尝试更改对象列表中的对象属性,并希望在更改后立即获得该对象。
我的方法是通过model.@each.property_1
export default Ember.Controller.extend({
onModelProperty1Change: function(){
// How can i get that particular object after one of it
// property was changed inside here?
//
// do some database action to the object...
}.observes('model.@each.property'),
});
我想知道这是否是正确的方法。还是应该在元素上进行更改事件?无论哪种方式,我都需要知道可以在observes
帮助器中获取该对象。
答案 0 :(得分:0)
如果不添加其他状态,当观察者触发并随后进行更新时,您可以“差异”,就无法进行尝试。我不推荐这种方法
相反,更改对象的函数应随后调用更新代码。这可以通过动作+服务轻松完成。假设触发更新的任何因素都会发送要更新的模型索引和新值(我只是在这里演示,因为您没有包括对象的更改方式)
actions: {
updateModelAtIndex(index, prop){
let modelToUpdate = this.get('model')[index];
modelToUpdate.set('property', prop);
let service = this.get('someInjectedService');
service.save(modelToUpdate);
}
}
现在,在具有双向绑定的旧余烬版本中,拦截这些更改并不是那么容易(当它们是绑定表单字段更改的结果时),并且您必须依靠观察者作为当前代码做。转换为单向绑定方法,在这种方法中,表单元素发出动作,而您仅在动作处理程序中更新模型即可解决此问题。