2016-01-30 69 views
0

我在Component.js中添加了一個命名模型。我可以從任何視圖訪問模型的名稱,但是我想從一個不適合我的控制器訪問這個模型。從控制器訪問模型 - SAPUI5

sap.ui.core.getModel(「modelName」)不工作,sap.ui.getCore()。getModel(「modelName」)也不起作用。

如何從控制器中引用它的包含Component和一個命名模型?

感謝

加納

+1

你應該分享你的模型定義代碼。 – keshet

回答

7

如果模型是使用清單路徑sap.ui5->機型註冊似乎只有

this.getOwnerComponent().getModel(modelName); 

我曾經歷過這個特別的國際化模式是在控制器可用。

+0

任何想法爲什麼這個改變?從哪個版本? – Gana

+0

我明白了。這是因爲我們可以在現實世界中擁有多個組件。 sap.ui.core會指向其他東西(可能是根組件,但尚未測試),但不是所有者組件! – Gana

7

請在您的控制器使用this.getView().getModel(name)。爲了解決這一問題,從組件中/中創建的模型還沒有準備在onInit我在基地控制器增加了一個getModel方法:

getModel : function(name) { 
    return this.getView().getModel(name) || this.getOwnerComponent().getModel(name); 
} 
+0

它不工作。按照「應用程序初始化」https://sapui5.hana.ondemand.com/#docs/guide/d2f58695fce3476f92fdfc07c9e8f7c6.html,模型尚未準備好在控制器的init方法中進行檢索。出於某種原因,所有命名模型在控制器和視圖中都不可用。 – Gana

+0

抱歉,模型在視圖中可用,但在控制器中不可用。 – Gana

+3

這只是無稽之談。 – matbtt

相關問題