gpt4 book ai didi

javascript - Ember.JS最佳实践: Model vs Controller field binding

转载 作者:行者123 更新时间:2023-12-02 15:34:57 32 4
gpt4 key购买 nike

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

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

发生此问题是因为我的所有文本字段都直接绑定(bind)到挑战模型,并且模型在您键入后立即更新,它会更新所有路线上的文本。我在编辑表单上有一个取消按钮,我可以在模型上执行 this.get('model').rollback() 来取消编辑。但是,如果您开始在可以单击的页面上的不同位置进行回滚,这会变得困惑。

我考虑解决此问题的方法是将表单字段绑定(bind)到 Controller 属性,并在每个路由上将模型属性复制到 setupController Hook 上的 Controller 属性。这将防止编辑影响其他路线。

我想知道 ember 中是否有这种最佳实践,或者是否有更好的方法来解决此问题?

谢谢

最佳答案

您可以在 deactivate 路由 Hook 中使用单回滚。然后在取消操作中您只能进行转换。

// 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

关于javascript - Ember.JS最佳实践: Model vs Controller field binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33022114/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com