关于 SAP UI5 OData V4 模型的 Property Binding 使用介绍
Property binding 和一个对象的值关联。
下面的例子:使用控制器方法 formatPhoneNumbersAsCSV
显示业务合作伙伴联系人的电话号码列表,以逗号分隔:
<SimpleForm binding="{/BusinessPartnerList('42')}">
<Label text="Phone number list" />
<Text text="{path : 'BP_2_CONTACT', mode : 'OneTime', targetType : 'any', formatter : '.formatPhoneNumbersAsCSV'}" />
</SimpleForm>
上面 XML 视图里,在 Text 控件里,显示 id 为 42 的 Business Partner 模型的属性值 BP_2_CONTACT
,并且用自定义格式器 .formatPhoneNumbersAsCSV
在电话号码之间加上逗号分隔符。
OData V4 模型根据控件或应用程序请求的数据范围,自动确定
系统查询选项 $top
和 $skip
.
在下面的示例中,生成的第一个请求是 GET People('angelhuffman')/Friends?$expand=Friends&$skip=0&$top=107。 $top 的值是根据请求数据的长度 (7) 加上控件提供的预取大小 (100) 计算得出的。
<table:Table id="PeopleTable" width="auto" title="People" visibleRowCount="7"
rows="{
path:'/People(\'angelhuffman\')/Friends',
parameters: {
$expand:'Friends'
}
}">
<table:columns>
...
</table:columns>
</table:Table>
另一种分页机制是服务器驱动分页,服务器只返回请求数据的一部分以限制响应大小。 自 SAPUI5 1.72 起,OData V4 模型支持此机制。该模型会将检索到的数据与对控件或应用程序的响应一起提供。 后续请求不会再自动触发,只有在控件或应用程序向模型请求附加
数据时才会触发。
只有 list 和 context binding 支持 OData 系统查询选项 $apply、$count、$expand、$filter、$orderby、$search 和 $select,property binding 不支持。
使用 JavaScript 进行数据绑定的例子:
oView.byId("SalesOrderTable").bindItems({
path : "/SalesOrderList",
parameters : {
"$count" : true,
"$expand" : {
"SO_2_SOITEM" : {
"$orderby" : "ItemPosition",
"$select" : ["ItemPosition", "Quantity", "QuantityUnit", "SalesOrderID"]
}
},
"$filter" : "BuyerName ge 'M'",
"$orderby" : "GrossAmount desc",
"$select" : ["BuyerName", "CurrencyCode", "GrossAmount", "Note", "SalesOrderID"]
}
});
使用 XML 视图进行数据绑定的例子:
<Table growing="true" growingThreshold="5" id="SalesOrders"
items="{
path : '/SalesOrderList',
parameters : {
$count : true,
$expand : 'SO_2_BP',
$filter : 'BuyerName ge \'M\'',
$orderby : 'GrossAmount desc',
$select : 'BuyerName,CurrencyCode,GrossAmount,Note,SalesOrderID'
},
}">
$expand 不仅仅可以是字符串,也可以是一个 JSON 对象:
<Table growing="true" growingThreshold="5" id="SalesOrders"
items="{
path : '/SalesOrderList',
parameters : {
$count : true,
$expand : {
'SO_2_SOITEM' : {
'$orderby' : 'ItemPosition',
'$select' : ['ItemPosition','Quantity','QuantityUnit','SalesOrderID']
}
},
$filter : 'BuyerName ge \'M\'',
$orderby : 'GrossAmount desc',
$select : ['BuyerName','CurrencyCode','GrossAmount','Note','SalesOrderID']
},
}">
OData V4 模型允许绑定由参数 $count 设置为 true 的 ODataListBinding 读取的实体集合的内联计数。不活跃的上下文(也就是说,没有显示在当前列表控件里的记录)不影响
这个计数;
在下面的示例中,表标题绑定到 $count
,因此表示绑定到表的集合中的销售订单实体的数量。
<Table id="SalesOrders"
items="{
path : '/SalesOrderList',
parameters : {
$count : true,
}
}"
>
<headerToolbar>
<Toolbar>
<content>
<Title id="SalesOrdersTitle" text="{$count} Sales Orders"/>
</content>
</Toolbar>
</headerToolbar>
...
</Table>
转载自:https://segmentfault.com/a/1190000041779593