odata - sapui5 odata 在提交更改错误后恢复模型
问题描述
我已经显示了一个项目列表(聚合绑定)和每个项目的编辑按钮来编辑项目的值。编辑按钮打开一个弹出窗口,我可以在其中更改值。
我正在使用双向绑定,并在编辑弹出窗口中的值并按下弹出“确定”按钮后调用 submitChanges()。
submitChanges 有两个回调——成功和错误。现在,当来自后端的错误(例如,另一个用户当前正在编辑项目)时,我可以处理并显示错误消息。并且数据在后端没有改变。然而,尽管出现错误,模型本身(在前端)还是发生了变化。
这是必须由 OData 服务本身处理的事情吗?还是我应该在前端做点什么?调用 resetChanges() 没有帮助 - 在 submitChanges 之后没有要还原的更改。
有什么例子或最佳实践吗?
解决方案
如果submitChanges
不成功并且您进入错误处理程序,则数据将保留在前端的“已编辑”表单中(因此您可以尝试再次提交)。
由您的前端逻辑决定要做什么:
- 默认是继续编辑,稍后再提交
- 一个常见的替代方法是
resetChanges
(在不成功之后有 !! 更改submitChanges
),然后oModel.refresh
从后端重新获取新副本,以便用户可以再次开始编辑
而且 - 当然,您可以为用户提供选择 - 重置所有内容并从后端获取新副本 - 或者每行中的重置按钮可以单独重置单个项目。
推荐阅读
- docker - 在 docker 中运行两个服务节点和 python
- r - 使用 WSL 在 R 中运行 Linux 可执行文件
- firebase - 我可以信任提供给 functions.https.onCall 函数的用户信息吗?
- php - PHP构造函数不同格式
- r - 如何遍历字符向量的 R 列表以通过使所有字符保持在逗号后面并包括一个字符来修改每个元素
- android - Crashlytics 没有看到 NDK 套件
- wordpress - 如何为现有的 Woocommerce 产品文本字段添加占位符
- python - 给reportlab.lib.utils.ImageReader一个字节
- c++ - 在多列中显示菜单项
- python - 关系和可选参数的设计模式?