如何在SAPUI5中获取父视图oData模型?

时间:2017-02-15 15:40:44

标签: sapui5

我在SAPUI5中有一个master-details应用程序(该应用程序由WebIde模板应用程序完成)。 App内部的视图设置为busy,我需要在子视图中取消显示视图。因此,我需要访问父视图。

所以在Master.controller.js我需要访问所有者组件视图。所有控制器都继承自BasicController并具有setModelgetModel函数。在App.controller.js内部有一条这样的行:

this.setModel(oViewModel, "appView");

我无法通过以下方式访问主控制器中的此视图模型:

this.getModel("appView");

返回undefined。有命令我可以获得所有者组件:

this.getOwnerComponent()

但是,如何查看所有者组件或其OViewModel

4 个答案:

答案 0 :(得分:1)

您想要从Masterview控制器访问仅在DetailView中定义的模型吗?

首先抓住DetailView,然后就可以访问那里的模型了。

sap.ui.getCore().byId("IdOfDetailView").getModel("appView");

答案 1 :(得分:1)

在manifest.json中查看你的rootView,它应该是你的App控制器。 https://sapui5.hana.ondemand.com/#docs/guide/be0cf40f61184b358b5faedaec98b2da.html

将以下代码放入基本控制器中。

this.getOwnerComponent().getAggregation("rootControl").getModel("appView")

我尝试了 Worklist.controller.js 中的代码,该代码是https://sapui5.hana.ondemand.com/test-resources/sap/m/demokit/tutorial/worklist/07/webapp/test/mockServer.html的UI5演示项目的一部分,它运行正常。

谢谢!

答案 2 :(得分:0)

只要您在括号内使用了getModel()正确的名称,就可以在任何地方访问模型。您是否在Component.js或SAP建议定义模型的地方定义了模型,名为“appView”?

答案 3 :(得分:-1)

您无法使用getOwnerModel

访问模型

Look at here

来自Sap的Jamie Cawley说:

  

在版本1.28中,getOwnerComponent不提供访问权限   模型,这是后来添加的。使用模板时应该有   设置“可用版本”的选项,默认为   最新。很可能该应用程序是使用1.3x版本生成的   有这些功能,但不幸的是你后端不支持   它。如果您有一个带有清单检查的应用程序   minUI5Version,否则它可能在user.project.json中   ui5ActiveVersion确定所需的版本。