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