我怎么知道哪个对象在model.@each EmberJS上更新了



我试图更改对象列表中的对象属性,并希望在更改后立即获取该对象。

我的方法是通过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助手中。

如果不

添加额外的状态,就不可能尝试在观察者触发并随后更新时"diff"。我不推荐这种方法

相反,更改对象的函数随后应调用更新代码。这可以通过操作 + 服务轻松实现。让我们假设您的更新的任何触发器都会发送要更新的模型索引和新值(我只是在这里演示,因为您没有包括对象如何更改(

actions: {
  updateModelAtIndex(index, prop){
    let modelToUpdate = this.get('model')[index];
    modelToUpdate.set('property', prop);
    let service = this.get('someInjectedService');
    service.save(modelToUpdate);
  }
}

现在,在具有 2 路绑定的旧 ember 版本中,拦截这些更改并不容易(当它们是绑定表单字段更改的结果时(,您必须像当前代码一样依赖观察者。转换为 1 向绑定方法,其中表单元素发出操作,并且仅在操作处理程序中更新模型可解决此问题。

最新更新