关于|关于 SAP UI5 Context.prototype.delete 方法的输入参数 Group ID 的细节
在 Jerry 这篇教程 SAP UI5 应用开发教程之六十六 - 基于 OData V4 的 SAP UI5 表格控件如何实现删除功能 里,有个朋友提了个问题:
文章图片
【关于|关于 SAP UI5 Context.prototype.delete 方法的输入参数 Group ID 的细节】我们选中列表行项目之后,点击删除按钮,会触发一个 OData 的删除请求:
文章图片
这个删除请求,通过 onDelete
函数的第 62 行代码,调用 BindingContext 实例的 delete
方法触发。该 delete 方法的输入参数为 $auto
, 这个字符串代表什么含义?
文章图片
老规矩,我们可以通过 Chrome 开发者工具的单步调试来了解这个参数的含义:Group ID.
文章图片
也可以在官方文档 里找到 delete 方法的参数定义:
文章图片
这个参数代表删除请求的 Group ID,$auto
是默认值。
在 Context.js 的 delete 实现里,会调用 OData model 实例的 checkGroupId
方法,对该传进来的值进行一个校验:
文章图片
group id 是 SAP UI5 框架用来标识和管理 OData Batch Request (批处理请求)的字段之一,参看文档:
文章图片
group id 允许的值有 $auto
, $auto.*
和 $direct
几种情况。$auto
的含义就是默认的行为,即将通过 OData Model 实例调用 API 触发的请求,以批处理的请求模式发送给 OData 服务器。$direct
则代表不使用批处理模式发送请求。
关于什么是 OData 请求的批处理发送模式,Jerry 在我这篇文章里已经详细介绍过:
SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍。
Context 会把 delete 操作 delegate 到 Binding 实例的 _delete
方法去执行。
文章图片
在绝大部分情况下,我们调用 BindingContext 的 delete 方法时,传入默认的 group id 即 $auto
即可。
这也是为什么 SAP 绝大多数的帮助文档里,给出的删除功能的实现示例代码里,都采用该默认值的原因:
文章图片
当然我们也可以在应用程序里自定义 group id,具体例子参考笔者这篇文章:
SAP UI5 OData V4 模型的构造方式
推荐阅读
- 关于|关于 SAP UI5 参数 $$updateGroupId 前面两个 $ 符号的含义
- SAP|SAP UI5 应用开发教程之一百零一 - SAP UI5 应用的 Locale 决定机制试读版
- 关于Vue3的defineProps用法
- 在|在 SAP BAS 里使用 SAP UI5 应用消费 OData 的 Create 和 Delete 操作
- 个人随笔|关于BLEU值计算的学习笔记
- 代码随想录|关于哈希表,你该了解这些!
- UI5|CSS 初学 (五)边框
- SAP 云平台上的 ABAP 编程环境里如何消费第三方服务
- 分享三个关于CMDB的小故事
- OpenHarmony - ArkUI基于JSAPI实现的360°全景展示