【发布时间】:2011-10-04 19:50:26
【问题描述】:
遇到服务器端错误(例如验证错误)时如何回滚模型更改?
鉴于必须在服务器端完成某些验证,使用backbone.js(Rails 后端)执行此操作的适当方法是什么?
保存主干模型时,会触发客户端验证,以在验证失败时提供适当的用户体验(该模型的视图不会更新)。但是,如果服务器端验证失败,则模型及其所有视图在 PUT 到服务器之前已经更新(使用无效数据)。
这似乎有一些问题。
- 在模型经过服务器端验证之前更新所有视图。 例如,如果您有一个带有弹出编辑的模型列表 对话框,列表中的模型可能会更新 调用 Model.save 之后但在它之前的不可验证信息 已经过服务器端验证和 PUT。
- 如果服务器返回错误(例如 422 错误),则不会发生模型“回滚”。无法验证的数据就像粪便一样坐在那里。这真的很糟糕。
我使用backbone.js 错了吗?是否有一种众所周知的方法来处理这种(非常常见的)场景?我知道我可以对旧值等进行一些手动缓存,但这是一种很糟糕的解决方案。
谢谢!
【问题讨论】:
-
这似乎在这里得到了回答:stackoverflow.com/a/10335668/1284283(一年后,可能是更新版本的主干js)。