SAP UI5 绑定路径由许多名称标记(name token)组成,这些标记由分隔符字符分隔。 在框架提供的所有模型中,分隔符 char 是斜线"/" 即 / 符号。
绑定路径可以是绝对的,也可以是相对的:绝对绑定路径以斜杠 "/" 开头,相对绑定路径以名称标记开头,并且相对于绑定的控件的上下文进行解析。 在聚合绑定的情况下,聚合的每个条目都存在上下文,也可以使用 setBindingContext 方法为控件显式设置上下文。
当您使用多个模型时,请在绑定路径中指定模型名称以寻址正确的模型。 这同样适用于为此类模型设置绑定上下文。 绑定路径必须以模型名称开头,后跟“>” (即大于号),如下面的示例所示,用于设置绑定上下文。
一些例子:
'/Products/0/ProductName' '/Products(0)/ProductName' 'ProductName' //with model name 'myModelName>/Products/0/ProductName' 'myModelName>/Products(0)/ProductName' 'myModelName>ProductName'
json 数据:
{ company: { name: "Treefish Inc", info: { employees: 3, }, contacts: [ { name: "Barbara", phone: "873" }, { name: "Gerry", phone: "734" }, { name: "Susan", phone: "275" } ] } }
绝对绑定的例子:
相对绑定的例子:
如何创建 OData 模型?
一个 OData 模型实例只能覆盖一个 OData 服务。 要访问多个服务,您必须创建多个 OData 模型实例。 创建 ODataModel 实例时唯一的必需参数是服务 URL。 它可以作为第一个参数或在 mParameters 映射中传递给构造函数。
例子:
var oModel = new sap.ui.model.odata.v2.ODataModel("http://services.odata.org/Northwind/Northwind.svc/"); var oModel = new sap.ui.model.odata.v2.ODataModel({serviceUrl: "http://services.odata.org/Northwind/Northwind.svc"});
创建 ODataModel 实例时,会发送一个请求以检索服务元数据:
http://services.odata.org/Northwind/Northwind.svc/$metadata
服务元数据按服务 URL 进行缓存。使用同一服务的多个 OData 模型可以共享此元数据。 只有第一个模型实例会触发 $metadata 请求。可以通过在 Odata 模型实例上调用 getServiceMetadata() 方法来访问服务元数据的 JSON 表示。
(1) 直接添加到 url 末尾:
var oModel = new sap.ui.model.odata.v2.ODataModel("http://myserver/MyService.svc/?myParam=value&myParam2=value");
(2) 使用 OData 模型构造函数的参数 mparameters:
var oModel = new sap.ui.model.odata.v2.ODataModel({ serviceUrl: "http://services.odata.org/Northwind/Northwind.svc", serviceUrlParams: { myParam: "value1", myParam2: "value2" }, metadataUrlParams: { myParam: "value1", myParam2: "value2" } });