写点什么

SAP OData V4 模型支持的一些数据绑定模式

作者:Jerry Wang
  • 2022 年 5 月 22 日
  • 本文字数:982 字

    阅读完需:约 3 分钟

SAP OData V4 模型支持的一些数据绑定模式

SAP OData V4 模型支持下列三种类型的数据绑定:


  1. List bindings,代表集合类型(Collection) 的绑定,比如 /SalesOrderList, 绑定实例的类型为 sap.ui.model.odata.v4.ODataListBinding.

  2. 上下文绑定(context binding),基于单个实体(single entity),比如 /SalesOrderList('0500000000'),绑定实例的类型为 sap.ui.model.odata.v4.ODataContextBinding.

  3. 属性绑定(Property bindings), 代表一个实体或者复杂类型(complex type)中的属性,比如 /ProductList('HT-1000')/Name. 绑定实例的类型是 sap.ui.model.odata.v4.ODataPropertyBinding.


虽然说 OData V4 模型本身提供了一些 API,也就是工厂方法 bindList, bindContextbindProperty 来创建 binding 实例,但通常情况下,应用开发人员绝不会直接调用这些方法,而是采取下列的方式创建 binding 实例。

使用 SAP UI5 控件的 bindElement 方法

例子:


oForm.bindElement("{/SalesOrderList('0500000000')}");
复制代码


这个例子将 form 控件绑定到一个指定的 Sales order 实例上,因此 form 里包含的所有元素,都以相对绑定的方式,显示该销售订单的实例数据。


实际项目应用中,绑定表达式可以更加复杂:


oForm.bindElement({path : "/SalesOrderList('0500000000')", parameters : {$expand : "SO_2_SOITEM", ...}, events : {dataReceived : '.onDataEvents', ...}});
复制代码


上面展示了如何监听事件 dataReceived 并在自己定义的事件处理函数 onDataEvents 里应对。

在 XML 视图里进行绑定声明

代码如下:


<Table items="{path : '/SalesOrderList', parameters : { $expand : 'SO_2_BP', $filter : 'BuyerName ge \'M\'', ...}, events : {dataReceived : '.onDataEvents', ... } }">
复制代码


上面的代码,将 Table 控件的 items 属性,绑定到了 OData 集合 /SalesOrderList 上。同时指定了附带的参数:$expand,这是 OData 的标准语法。


关于 OData V4 绑定路径的详细说明,可以查看其官网


如果添加了前导斜杠符号 / ,则每个资源路径(相对于服务根 URL,且无 query 选项)都是此模型中的有效数据绑定路径。


例如,可以使用 /EMPLOYEES('A%2FB%26C') 访问带有 key A/B&C 的实体实例。 请注意,需要适当的 URI 编码。


如果绑定的路径以正斜杠 / 开头,则绑定称为绝对绑定; 否则他们被称为相对绑定。 相对绑定的初始含义是,只要它们没有绑定上下文(binding Context),它们就没有可以显示的数据。

发布于: 刚刚阅读数: 3
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
SAP OData V4 模型支持的一些数据绑定模式_JavaScript_Jerry Wang_InfoQ写作社区