咱们能够在 SAP UI5 利用里应用如下的代码来创立一个 OData 模型实例:
this.oVocabularyModel = new ODataModel("/sap/opu/odata/SAP/vocabulary_srv/");
这里传入一个 OData 服务的 url 作为 ODataModel
构造函数的输出参数。
ODataModel 的依赖,通过如下代码引入:sap/ui/model/odata/v2/ODataModel
这个构造函数的参数如下:
new sap.ui.model.odata.v2.ODataModel(vServiceUrl, mParameters?)
- vServiceUrl:用于申请数据的服务的根本 URI;此处附加的其余 URL 参数将附加到每个申请中。如果传递一个对象,它将被解释为参数对象(第二个参数)。那么 mParameters.serviceUrl 就变成了强制参数。
- mParameters:可选参数,是一个键值对。能够蕴含下列属性:
(1) annotation:应从中加载正文元数据的 URL(或 URL 数组)
(2) bindableResponseHeaders:设置此数组以通过实体的 __metadata/headers
属性使自定义响应标头可绑定
(3) canonicalRequests:
模型是否尝试计算标准 URL 以申请数据。
例如:应用程序以具备相对绑定门路 /SalesOrderSet("1")
的表单显示销售订单的详细信息。该表单为具备绝对绑定门路 ToLineItems 的销售订单行我的项目嵌入了一个表。如果用户抉择了一个销售订单行我的项目(例如我的项目“10”),则该销售订单行我的项目的详细信息以另一种模式显示,该表单还蕴含一个销售订单行我的项目计划表,其中蕴含绝对绑定门路 ToSchedules。
如果 canonicalRequests 参数的默认值为 false,则 OData 模型将通过以下申请申请销售订单行我的项目的详细信息表单的数据:
GET /<serviceUrl>/SalesOrderSet("1")/ToLineItems(SalesOrderID="1",ItemPosition="10")
GET /<serviceUrl>/SalesOrderSet("1")/ToLineItems(SalesOrderID="1",ItemPosition="10")/ToSchedules
一些后端实现不反对资源 URL 中的多个导航属性。在这种状况下,请将 canonicalRequests 参数设置为 true。而后,OData 模型将长资源 URL 转换为标准 URL,并应用以下申请申请销售订单行我的项目的详细信息表单的数据:
GET /<serviceUrl>/SalesOrderLineItemsSet(SalesOrderID="1",ItemPosition="10")
GET /<serviceUrl>/SalesOrderLineItemsSet(SalesOrderID="1",ItemPosition="10")/ToSchedules