【问题标题】:Ember model lifecycle, and reverting to original stateEmber 模型生命周期,并恢复到原始状态
【发布时间】:2013-01-04 21:31:08
【问题描述】:

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

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

调用

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

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

使用最新的 ember 和 ember-data。

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

    在与@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();
      }
    });
    

    【讨论】:

    • 看来它正在工作!我有很多关于 ember 的知识,我明白了。在我接受答案之前会做更多的测试:) 编辑:如果我直接通过 url 而不是链接返回列表,exit 方法甚至会运行。太棒了。
    • 很高兴知道它正在工作:)。请注意,如果您刷新 /versions/1 上的页面,您只会看到一个空白页面。在头疼之前,只需将 Fixtures 中的 id 更改为字符串,而不是整数。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2023-04-05
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多