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



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

  1. 用户点击挑战链接。
  2. 系统显示挑战列表。
  3. 用户点击编辑挑战按钮。
  4. 显示编辑挑战表单。
  5. 用户更新挑战名。
  6. 用户点击联赛链接,不保存挑战。
  7. 系统显示联赛列表。
  8. 用户点击挑战链接。
  9. 系统显示更新后的挑战列表。

这个问题的发生是因为我所有的文本字段都直接绑定到挑战模型,因为模型在你输入的时候就会更新,它会更新所有路由上的文本。我在编辑表单上有一个取消按钮,我在模型上执行this.get('model').rollback()来取消编辑。但是,如果你开始在页面的不同位置执行回滚操作,那么这会变得很混乱。

我想解决这个问题的方法是将表单字段绑定到控制器属性,并在每个路由上将模型属性复制到setupController钩子上的控制器属性。这将防止编辑影响其他路由。

我想知道这是十一月的最佳实践,还是有更好的方法来解决这个问题?

谢谢

可以在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/2122https://github.com/emberjs/data/issues/3273 issuecomment - 110965145

最新更新