2016-01-30 71 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

相关问题