首页 > 解决方案 > 如何使用导航属性?

问题描述

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 

但我不知道这是否是正确的方式。

标签: odatasapui5

解决方案


顾名思义,导航属性是可以导航到相关实体类型的属性。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>

然后将自动ODataContextBindingODataListBinding您发送请求。


上面的bindingin XML 代码是绑定单个实体的方法之一。
另请参阅文档主题上下文绑定(元素绑定)


推荐阅读