odata - 如何使用导航属性?
问题描述
OData 服务 (V2) 包含多个导航属性,如下所示:
ClassNum: "ZPM_TEST_01" ClassNumDescr: "ZPM_TEST_01" ClassType: "001" InternalClass: "0000000130" ValidFrom: Tue Sep 04 2018 02:00:00 GMT+0200 (Central European Summer Time) {} ValidUntil: Fri Dec 31 9999 01:00:00 GMT+0100 (Central European Standard Time) {} to_IClassHeaderVh: {__deferred: {…}} to_IClassVh: {__deferred: {…}}
正如您在上面看到的,to_IClassHeaderVh
并且to_IClassVh
是导航属性。
请求 OData 服务的代码:
oModel.read(sUri, {
success: function (oData) {
},
error: Util.showErrorClassNotFound
});
如何通过代码从导航属性中获取 URL?我可以通过以下对象获取它:
oData.to_IClassVh.__deferred.uri
但我不知道这是否是正确的方式。
解决方案
顾名思义,导航属性是可以导航到相关实体类型的属性。UI5 框架也支持此功能,因此应用程序开发人员不必手动提取 URL。事实上,您甚至不需要调用read
. 让我们以这个实体数据模型为例:
CustomerSet
NavigationProperty: "ToOrders"
1 ___ n
OrderSet
NavigationProperty: "ToCustomer"
从一个实体导航到实体集合:
<Page><!-- bound to /CustomerSet('ALFKI') -->
<List items="{ToOrders}">
<StandardListItem title="{OrderID}" />
</List>
</Page>
从一个实体导航到另一个实体:
<Page><!-- bound to /OrderSet(10643) -->
<Panel binding="{ToCustomer}" headerText="{CustomerName}" />
</Page>
然后将自动ODataContextBinding
为ODataListBinding
您发送请求。
上面的binding
in XML 代码是绑定单个实体的方法之一。
另请参阅文档主题上下文绑定(元素绑定)。