我試圖從OData源中準備數據以在我的fiori應用程序的條形圖中顯示它。爲此,我在manifest.json中設置OData模型。用列表測試,只需使用在控制器的onInit中讀取OData上下文
items="{path : 'modelname>/dataset'}
正常工作並顯示內容。爲了準備圖(VizFrame)的數據,我在視圖控制器(mvc:XMLView)中使用了onInit()函數。數據準備與question中討論的相似。
起初我獲得ODataModel:
var oODataModel = this.getOwnerComponent().getModel("modelname");
接下來我做的綁定:
var oBindings = oODataModel.bindList("/dataset");
不幸的是,oBindings().getContexts()
陣列始終是空的,也oBindings.getLength()
爲零。因此,VizFrame只顯示「無數據」。
這可能是數據模型在onInit()函數期間未被完全加載,還是我誤解了訪問數據的方式?
預先感謝
更新 我臨時使用自動創建的綁定從顯示數據作爲列表視圖解決了這個問題。我從綁定getView().byId("myList").getBindings("items")
grep的「dataReceived」事件,並在那裏做我的計算。該圖的模型(因爲它在不同的視圖中使用)在Component.js中創建,並在Core sap.ui.getCore().setModel("graphModel")
中註冊。 我認爲這個解決方案很髒,因爲圖表數據取決於來自不同視圖的列表數據,這會導致問題,例如,當您使用增長列表時(因爲綁定中的數據得到更新並且從odata模型中選擇了不同的範圍)。 任何建議,我如何獲得odata模型條目而不依賴於不同的列表?
控制檯顯示模型。例如。在mContexts下面是來自oData的前20個條目的列表,並且aBindings包含具有81個對象(其每個都具有屬性sPath =「/ dataset」)的數組。 –