Ember数据:何时自动提交更改?

时间:2013-08-25 17:50:04

标签: javascript ember.js ember-data

我正在编写一个Ember应用程序,该应用程序允许用户修改数据并自动提交对后端的更改,而无需单击任何" Save"按钮。我在这段代码中遇到了一个奇怪的问题

record.set(key, newValue);
record.get('store').commit();

在将记录添加到commit()存储桶之前,首先调用updated方法。如果我推迟commit()

record.set(key, newValue);
setTimeout(function() {
  record.get('store').commit();
}, 1);

它的效果非常好,但在Ember做事并不合适。是否有任何事件通知何时可以保存记录?

1 个答案:

答案 0 :(得分:0)

  

它完美无缺,但感觉不像是在Ember做事的正确方法。是否有任何事件通知何时可以保存记录?

有一个标志可以设置一个观察者,这是isDirty属性,表示记录有本地更改仍未提交,例如:

App.MyModel = DS.Model.extend({
  ...
  isDirtyChanged: function() {
    if(this.get('isDirty')) {
      this.get('store').commit();
    }
  }.observes('isDirty')
});

然后打电话:

record.set(key, newValue);

isDirtyChanged会自动调用,因为我们设置的观察者验证了isDirty属性并提交是否为真。

您还可以在此处查看更多生命周期事件和属性:http://emberjs.com/guides/models/model-lifecycle/

另请参阅此处了解demo(它还有其他一些内容,但请关注Author模型以及如何设置观察者,同时还要PostController和{ {1}}中的函数)在作者姓名下方的输入字段中输入内容,然后按update按钮,现在观看控制台日志。

希望它有所帮助。