2016-09-27 28 views
0

我有一個實體的oData模型:Order,OrderInformation。 Order和OrderInformation之間有1:1的關聯。在SAPUI5 Odata模型中的實體getProperty不起作用

現在在視圖中,基於OrderInformation中的一個值,我應該隱藏/顯示一個按鈕。

在控制器中,獲取OrderInformation-> appUrl的值的以下邏輯不起作用,但我可以讀取實體'Order'的屬性。

Init: function(){ 
    // Not working 
    var prop = this.getView().getModel().getProperty("/OrderInformations('"+ this._orderId + "')/appUrl"); 
    // Working 
    var prop = this.getView().getModel().getProperty("/Orders('"+ this._orderId + "')/orderType"); 
    } 

在交易/ IWFND/GW_CLIENT,下面的查詢給了我正確的值

/sap/opu/odata/sap/<<ServiceURL>>/OrderInformations('132123')/appUrl 

我也試圖與attachRequestCompleted,但仍然沒有成功。

Init:function(){ 
    var oModel = this.getView().getModel(); 
    oModel.attachRequestCompleted(function(oEvent){ 
     var myval = model.getProperty("/OrderInformations('"+ this._orderId + "')/appUrl"); 
     }); 
} 

有人可以提供任何想法什麼可以出錯?

BR Nilesh製作

回答

2

可以使用oModel.read功能觸發到後端的請求,成功處理程序中你讀響應的結果和處理接收到的數據

var test = oModel.read("OrderInformations('" + this._orderId + "')", { 
    success: function(oData, response) { 
     var appUrl = oData.result.appUrl; //response.data.appUrl also works 
     // do something 
    }, 
    error: function (oError) { 
     // Error handling on failed response 
    } 
}); 

API參考:https://openui5beta.hana.ondemand.com/#docs/api/symbols/sap.ui.model.odata.ODataModel.html#read

我不懂這行,你寫道:

在控制器中,獲取值 OrderInformation-> appUrl的值不起作用,但我可以讀取 實體「Order」的屬性。

訂單是另一個具有屬性的實體,並且其工作方式類似於上面所述? 你是否像這樣初始化你的模型: /sap/opu/odata/sap/<<ServiceURL>>/OrderOrderInformation是Order的相關實體嗎?如果是用它定義了兩個實體

我希望這回答了你的問題之間的關係的OData服務的導航屬性擴展讀取時,如果留下什麼東西,讓我知道

問候

+0

嗨,你在分析中發現。我只是不想使用mode.read進行另一個調用。似乎問題是我試圖讀取甚至沒有加載到內存中的東西的屬性。我最終確實使用了Mode.read。謝謝 ! –