【问题标题】:Ember How to reset controller attributes when model is refreshedEmber如何在模型刷新时重置控制器属性
【发布时间】:2013-12-15 06:38:35
【问题描述】:

我正在使用 ember-data 作为模型。这些页面有两个选项卡,第一个选项卡是带有记录列表的网格。当用户单击一行时,它会将用户带到第二个选项卡并使用选定的网格行 ID 从数据库加载数据。当用户加载第一行,进行更改但未保存时,返回选项卡 1,单击另一行将用户带回具有新模型的第二个选项卡,如果用户返回第一个选项卡并单击他第一次选择的行,它会调出更改后的未保存数据。模型已从数据库中刷新,但控制器属性值仍保留第一次用户交互时未保存的更改。如何刷新属性而不循环每个控制器属性以匹配新模型?

【问题讨论】:

    标签: ember.js model controller


    【解决方案1】:

    我的理解是模型不会从服务器重新加载 - 一旦它在内存中,Ember Data 将保留它,包括任何未保存的更改。

    重置任何未保存更改的方法是在退出第二个选项卡时调用模型的rollback() 方法,这将丢弃所有未提交的更改。不过,您可能希望在执行此操作之前检查您的用户是要保存还是放弃他们的更改。

    【讨论】:

    • 我一开始也是这么想的,所以我使用了“Model.Reload”并确保它确实命中了服务器端的 web api。
    • 您为我指明了正确的方向。虽然模型确实刷新了,但 _attributes 并没有,并且回滚起到了作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多