SAP OData V4 模型反对下列三种类型的数据绑定:
- List bindings,代表汇合类型(Collection) 的绑定,比方
/SalesOrderList
, 绑定实例的类型为sap.ui.model.odata.v4.ODataListBinding
. - 上下文绑定(context binding),基于单个实体(single entity),比方
/SalesOrderList('0500000000')
,绑定实例的类型为sap.ui.model.odata.v4.ODataContextBinding
. - 属性绑定 (Property bindings), 代表一个实体或者简单类型(complex type) 中的属性,比方
/ProductList('HT-1000')/Name
. 绑定实例的类型是sap.ui.model.odata.v4.ODataPropertyBinding
.
尽管说 OData V4 模型自身提供了一些 API,也就是工厂办法 bindList, bindContext
和 bindProperty
来创立 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),它们就没有能够显示的数据。