我在SAPUI5中有一个master-details应用程序(该应用程序由WebIde模板应用程序完成)。
App
内部的视图设置为busy,我需要在子视图中取消显示视图。因此,我需要访问父视图。
所以在Master.controller.js
我需要访问所有者组件视图。所有控制器都继承自BasicController并具有setModel
和getModel
函数。在App.controller.js
内部有一条这样的行:
this.setModel(oViewModel, "appView");
我无法通过以下方式访问主控制器中的此视图模型:
this.getModel("appView");
返回undefined
。有命令我可以获得所有者组件:
this.getOwnerComponent()
但是,如何查看所有者组件或其OViewModel
?
答案 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
:
在版本1.28中,getOwnerComponent不提供访问权限 模型,这是后来添加的。使用模板时应该有 设置“可用版本”的选项,默认为 最新。很可能该应用程序是使用1.3x版本生成的 有这些功能,但不幸的是你后端不支持 它。如果您有一个带有清单检查的应用程序 minUI5Version,否则它可能在user.project.json中 ui5ActiveVersion确定所需的版本。