gpt4 book ai didi

ember.js - 回滚对 Ember 数据模型的所有更改的最佳方法

转载 作者:行者123 更新时间:2023-12-04 21:36:15 26 4
gpt4 key购买 nike

我正在使用 ember-data 来编辑具有自动模型分辨率的用户

this.route('user', function() {
this.route('edit', { path: ':user_id'})
});

这工作正常,用户可以修改模型的所有方面 DS.attribute , DS.belongsToDS.hasMany .

用户可以通过多种方式离开,在这种情况下,应从模型中删除所有更改。
  • 点击Cancel按钮
  • 点击Broswer Back按钮
  • 点击Save按钮,远程请求fails ,然后离开页面。
  • 只需单击页面上的其他链接,即可将它们带到其他地方。

  • 只有当用户明确希望通过单击 Save 来应用更改时,才能应用这些更改。按钮,服务器请求成功。

    我考虑使用 ember-buffered-proxy但我不确定这将如何处理 DS.belongsTo 和 DS.hasMany 关系。无论如何,在保存模型之前我需要做 buffer.applyBufferedChanges();在保存之前,如果服务器出现故障,我会像以前一样处于保存状态。
    willTransition route 的钩子(Hook)似乎是执行此操作的明显位置,但我如何确保从给定的模型中删除所有更改 rollbackAttributes()仅适用于 DS.attribute控制。

    最佳答案

    尝试使用 Ember.Route refresh() route 的方法 willTransition() Action 钩子(Hook),像这样:

    action: {
    willTransition() {
    const unsavedModel = this.get('unsaved');
    if (unsavedModel) {
    this.refresh();
    }
    }
    }

    refresh() 方法可用于“使用与首次输入路由时相同的参数重新查询服务器以获取最新信息”。

    我建议了一个名为 unsaved 的标志, 可以默认为 true , 除非它被设置为 false在成功的 save 期间的某个时间点,在过渡之前。

    关于ember.js - 回滚对 Ember 数据模型的所有更改的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36903602/

    26 4 0