4

我的应用程序具有从后端读取的一组实体的新/编辑表单。

当我打开这样的表格并填写/编辑一些字段,然后离开时,即使我没有提交这些更改,实体列表中的记录也会发生变化。重新加载应用程序(从后端重新加载数据)解决了这个问题,但不是一个选项。

我已经尝试在表单视图的 willDestroyElement 中进行一些事务回滚,但这似乎从根本上是错误的,因为即使在成功提交表单之后它也会被调用(并且实际上与 崩溃Attempted to handle event rollback on X while in state rootState.loaded.updated.inFlight)。

对于任何涉及离开表单的用例,我将如何忽略所有未提交的表单更改(类似于按下执行事务回滚的取消按钮)?

使用 Ember rc5,Ember Data 0.13。

4

1 回答 1

4

退出表单路由时,检查记录的状态。如果它的 (isNew OR isDirty) 和它的 NOT isSaving,则回滚:

App.FormRoute = Ember.Route.extend({
  deactivate: function() {
    var model = this.controllerFor('form');
    if ( (model.get('isNew') || model.get('isDirty')) && (!model.get('isSaving')) ) {
      model.rollback();
    }
  }
});
于 2013-07-17T20:21:03.420 回答