2017-08-17 105 views
-1

得到的數據我有問題,如果我將在我的控制器一JSONModel,我不能夠獲取數據出來的:openui5從JSONModel

var oModel = new JSONModel(jQuery.sap.getModulePath("QAQuickAccess", "/routes.json")); 

this.getView().setModel(oModel); 
console.log(oModel.getJSON()); 

getJSON方法只是stringifies的oData對象的模型。但它只是給了我一個空洞的對象。如果我只記錄oModel,我可以看到的物體與它的內容:

Object content

回答

0

您可以通過oModel.getProperty("/TileCollection");

+0

我的日誌: oModel.getData()= {} oModel.getProperty( 「/ TileCollection」)=未定義 oModel.getJSON()= {} oModel。 oData = {} –

+0

但是在相同的上下文中,您的oModel日誌中充滿了數據? –

+0

oModel中的oData對象填充了「TileCollection」..它的屏幕位於問題的上方。所有日誌都在控制器的「onInit」函數中執行。 –

0

訪問屬性有2種方式來實現這一目標:

1)異步方式:默認情況下,JSONModel生成的HTTP調用是異步的。所以如果你想在HTTP請求完成後訪問數據,那麼你需要使用下面代碼片段中提到的attachRequestCompleted方法。 這會自動調用監聽HTTP請求完成後並在聽者可以附加JSONModel到您的視圖或執行其他businsess邏輯如下提到:

var oModel = new JSONModel(jQuery.sap.getModulePath("QAQuickAccess", "/routes.json")); 
oModel.attachRequestCompleted(null,function() { 
console.log(oModel.getData()); 
this.getView().setModel(oModel) }, 
this); 

2)同步方式:如果您想要立即加載數據,那麼您可以使用以下參數的方法使用loadData方法。這將使同步HTTP請求:

var oModel = new JSONModel({}); 
var url = jQuery.sap.getModulePath("QAQuickAccess", "/routes.json") 
oModel .loadData(url, "", false); 
this.getView().setModel(oModel); 
console.log(oModel .getData());