我正在寻找Ember.JS的最佳实践来修复以下场景:
发生此问题是因为我的所有文本字段都直接绑定到质询模型,因为模型会在您键入后立即更新,更新所有路径上的文本。我在编辑表单上有一个取消按钮,我在模型上执行此操作。(模型')。rollback()以取消编辑。但是,如果您开始在可以单击的页面上的不同位置进行回滚,则会变得混乱。
我正在考虑修复此问题的方法是将表单字段绑定到控制器属性,并在每个路由上将模型属性复制到setupController挂钩上的控制器属性。这样可以防止编辑影响其他路线。
我想知道这是ember中的最佳做法,还是有更好的方法来解决这个问题?
谢谢
答案 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