2

我正在努力了解有关 ember 模型生命周期的所有内容。我创建了这个 jsfiddle来说明我的问题。单击列表中的一个条目、编辑值并单击版本链接返回列表时,我收到以下错误:

未捕获的错误:尝试loadedData在 rootState.loaded.updated.uncommitted 状态下处理事件。用 {} 调用

这是什么原因造成的?我知道对象状态现在很脏,但是如何在打开列表时强制刷新所有对象?

此外,如果未保存表单,有关如何放弃对属性的所有更改的任何建议?我正在考虑克隆对象,在编辑表单中使用该克隆,并在保存时将其与原始对象合并。没有我最初想象的那么容易。

使用最新的 ember 和 ember-data。

4

1 回答 1

3

在与@tchak 快速讨论后,解决方案可能是覆盖版本路由的退出函数,并回滚当前模型。

App.VersionRoute = Ember.Route.extend({
  exit: function() {
    var controller = this.controllerFor(this.templateName),
        content = controller.get('content');

    if (content.get('isDirty')) {
      content.get('transaction').rollback(); 
    }
    this._super();
  }
});
于 2013-01-04T13:31:08.663 回答