提交更改后sapui5 odata恢复模型错误

提交更改后sapui5 odata恢复模型错误,odata,sapui5,sap-web-ide,web-ide,Odata,Sapui5,Sap Web Ide,Web Ide,我已经显示了项目列表(聚合绑定)和每个项目旁边的编辑按钮,以编辑项目的值。 编辑按钮打开一个弹出窗口,我可以在其中更改值 我使用双向绑定,在编辑弹出窗口中的值并按下弹出窗口的“确定”按钮后调用submitChanges() submitChanges有两个回调—成功和错误。 现在,当后端出现错误时(例如,另一个用户当前正在编辑项目),我可以处理并显示错误消息。并且数据不会在后端更改。 然而,尽管存在错误,模型本身(在前端)还是发生了变化 这是OData服务本身必须处理的事情吗? 或者我应该在前端

我已经显示了项目列表(聚合绑定)和每个项目旁边的编辑按钮,以编辑项目的值。 编辑按钮打开一个弹出窗口,我可以在其中更改值

我使用双向绑定,在编辑弹出窗口中的值并按下弹出窗口的“确定”按钮后调用submitChanges()

submitChanges有两个回调—成功和错误。 现在,当后端出现错误时(例如,另一个用户当前正在编辑项目),我可以处理并显示错误消息。并且数据不会在后端更改。 然而,尽管存在错误,模型本身(在前端)还是发生了变化

这是OData服务本身必须处理的事情吗? 或者我应该在前端做些什么?调用resetChanges()没有帮助-提交更改后没有要还原的更改


有任何示例或最佳实践吗?

如果
提交更改失败,并且您进入了错误处理程序,数据将保留在前端的“编辑”表单中(因此您可以再次尝试提交)

由前端逻辑决定要做什么:

  • 默认设置为继续编辑并稍后尝试提交
  • 常见的替代方法是
    resetChanges
    (在
    submitChanges
    失败后有!!个更改)和
    oModel.refresh
    ,然后从后端重新注册一个新副本,这样用户就可以重新开始编辑

当然,您可以为用户提供选择,重置所有内容并从后端获取一份新副本,或者在每行中设置一个重置按钮,以便能够单独重置单个项目

你的意思是刷新(而不是恢复或重置)?是:)只是检查了api。Thx!=>编辑answer@iPirat谢谢你的回答!你是对的!变化仍然存在。希望我不会把任何人和那部分混淆。我可以在错误回调中
resetChanges
。请注意
resetChanges
也可能重置其他挂起但不相关的更改。这是真的。此外,
提交更改
提交所有更改。包括屏幕上未显示的更改。最佳实践:当离开屏幕(任何形式的导航)询问用户是否重置或提交更改时