Ember.JS最佳实践:模型与控制器字段绑定

时间:2015-10-08 17:15:46

标签: javascript ember.js

我正在寻找Ember.JS的最佳实践来修复以下场景:

  1. 用户点击挑战链接。
  2. 系统显示挑战列表。
  3. 用户点击修改质询按钮。
  4. 系统显示编辑质询表单。
  5. 用户更新挑战名称。
  6. 用户点击联盟链接,而不保存质询。
  7. 系统显示联赛列表。
  8. 用户点击挑战链接。
  9. 系统会显示更新的质询名称的质询列表。
  10. 发生此问题是因为我的所有文本字段都直接绑定到质询模型,因为模型会在您键入后立即更新,更新所有路径上的文本。我在编辑表单上有一个取消按钮,我在模型上执行此操作。(模型')。rollback()以取消编辑。但是,如果您开始在可以单击的页面上的不同位置进行回滚,则会变得混乱。

    我正在考虑修复此问题的方法是将表单字段绑定到控制器属性,并在每个路由上将模型属性复制到setupController挂钩上的控制器属性。这样可以防止编辑影响其他路线。

    我想知道这是ember中的最佳做法,还是有更好的方法来解决这个问题?

    谢谢

1 个答案:

答案 0 :(得分:2)

您可以在deactivate路由挂钩中使用单个回滚。然后在cancel操作中,您只能进行转换。

// edit challenge route
model(params) {
  ...
},

deactivate() {
  this.modelFor( this.get('routeName')).rollback();
}

PS您是否知道rollback()仍然无法正常处理关系并在ED 2.0中缩减为rollbackAttributes()

相关链接: https://github.com/emberjs/data/issues/2122 https://github.com/emberjs/data/issues/3273#issuecomment-110965145