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 模型的例子

json 数据:

{    company: {        name: "Treefish Inc",        info: {            employees: 3,        },        contacts: [            {                name: "Barbara",                phone: "873"            },            {                name: "Gerry",                phone: "734"            },            {                name: "Susan",                phone: "275"            }        ]    }}

相对绑定的例子:

  • /company/name
  • /company/info/employees
  • /company/contacts

绝对绑定的例子:

  • name
  • info/employees
  • contacts

OData 绑定的例子

如何创立 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/Nor...$metadata

服务元数据按服务 URL 进行缓存。应用同一服务的多个 OData 模型能够共享此元数据。 只有第一个模型实例会触发 $metadata 申请。能够通过在 Odata 模型实例上调用 getServiceMetadata() 办法来拜访服务元数据的 JSON 示意。

给 OData 申请削减 url 参数的两种方法

(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"    }});