乐趣区

关于javascript:关于-SAP-UI5-Contextprototypedelete-方法的输入参数-Group-ID-的细节

在 Jerry 这篇教程 SAP UI5 利用开发教程之六十六 – 基于 OData V4 的 SAP UI5 表格控件如何实现删除性能 里,有个敌人提了个问题:

咱们选中列表行我的项目之后,点击删除按钮,会触发一个 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 模型的结构形式

退出移动版