jax*_*jax 5 ember.js ember-data
我正在使用ember-data来编辑具有自动模型分辨率的用户
this.route('user', function() {
  this.route('edit', { path: ':user_id'})
});
这工作正常,用户可以修改模型的所有方面DS.attribute,DS.belongsTo和DS.hasMany.
用户可以通过多种方式导航,在这种情况下,应从模型中删除所有更改.
Cancel按钮Broswer Back按钮Save按钮,远程请求fails,然后导航离开页面.只有在用户通过单击Save按钮明确要求更改并且服务器请求成功时,才应应用更改.
我考虑使用ember-buffered-proxy,但我不确定这将如何处理DS.belongsTo和DS.hasMany关系.无论如何,在保存模型之前我需要   buffer.applyBufferedChanges();先保存,如果服务器出现故障,我就像以前一样处于保存状态.
willTransition路线中的钩子似乎是显而易见的地方,但我怎样才能确保所有更改都从模型中删除,rollbackAttributes()只有DS.attribute控件才有效.
refresh()尝试在路由的操作挂钩中使用 Ember.Route方法willTransition(),如下所示:
action: {
  willTransition() {
    const unsavedModel = this.get('unsaved');
    if (unsavedModel) {
      this.refresh();
    }
  }
}
该refresh()方法可用于“使用与第一次输入路由时相同的参数重新向服务器查询最新信息”。
我建议使用一个名为 的标志unsaved,该标志可以默认为,除非在转换之前在成功期间的某个时刻true将其设置为。falsesave