2016-08-03 61 views
1

當我在代碼中創建一個模型,我通常使用:SAPUI5:如何以編程方式訪問ODataModel數據?

在那之後,我可以訪問到的型號和它的使用值:

var oModel = this.getView().getModel("data"); 
var description = oModel.getProperty("/description"); 

但是,這是一個內部JSON結構體。當我從Hana平臺使用oData目標時,或者在我的SAPUI5項目中使用模型服務器時,如何獲得oModel結構?

+0

您可以使用ODataModel完全相同的方式檢索屬性數據;你的問題到底是什麼? – Qualiture

回答

3

getProperty方法在任何其他模型上存在於ODataModel(v2)上。因此,使用不同的很多:

如何ODataModel存儲數據

這是因爲ODataModel存儲通過它的數據是關鍵,例如

{ 
    "EntitySet('Key-1')": {}, 
    "EntitySet('Key-2')": {}, 
    "EntitySet('Key-3')": {}, 
    "ExpandedEntitySet(EntityID='Key-3',ExpandedEntityIS='5')": {} 
} 

檢查oMyODataDataModel.oData看到實際存儲的數據(但請不要使用或操作這種方式,因爲這是內部API)。

ODataModels的getProperty

要檢索你不得不說,一個單一的實體是這樣的:

oDataModel.getProperty("/EntitySet('Key-1')"); 

Eventhough的收集綁定路徑/EntitySet請求

oDataModel.getProperty("/EntitySet"); 

會什麼都不返回發生這種情況是因爲oData [「EntitySet」]的內部存儲數據結構中沒有實體,並且getProperty方法仍然不是其他內容,因此在該內部結構中查找。

包括擴大實體與ODataModels

一個有趣的事情getProperty方法是bIncludeExpandEntries參數。如果將其設置爲true,則將返回所訪問的實體,包括所有可能展開的NavigationProperties。在上面的例子

oDataModel.getProperty("/EntitySet('Key-3')"); 

也將與它返回 「ExpandedEntitySet(ENTITYID = '鍵-3',ExpandedEntityIS = '5')」。

ODataModels的getObject

ODataModels getObject方法有更多的靈活性,因爲它允許在本地使用的OData的參數$select$expand。獲取EntitySet仍然是不可能的...注意:它不會加載任何缺少的數據,並且返回的數據可能不完整!

相關問題