【发布时间】:2018-07-30 22:16:59
【问题描述】:
在我的 ui5 控制器中,我在 onBeforeRending 函数中调用我的方法。在该方法中,我调用了this.getView().getId(),这是我正在使用的库所需要的,这很好:
onBeforeRendering: function () {
this.func();
},
func: function() {
this.getView().getId();
}
后来,我有一个 html 控件的 onClick 事件处理程序:
click: function () {
const controller = sap.ui.controller("Project.controller.Controller");
controller.func();
}
当从controller.func 调用this.getView() 时,出现以下错误:
Uncaught TypeError: Cannot read property 'getId' of undefined
func
click
我意识到这意味着 getView() 返回undefined,但我不知道为什么。在第二次调用中检查 func 内部的 this 引用表明它可以访问控制器中的其他功能,但不能访问 getView。
编辑:
我通过将视图绑定到一个变量然后在点击回调中捕获它来解决问题。
let view = this.getView()
后来
click: function() {
const controller = sap.ui.controller("Project.controller.Controller");
controller.getView = function () {
return view;
};
controller.func();
}
【问题讨论】:
-
onClick 处理程序在哪里?这是在自定义控件中吗?我认为您只是在获取一个控制器,如果这是意图,它不会连接到当前视图。
-
@Jorg 如何将它连接到我想要的视图?
-
所以是自定义控件?答案将取决于它是什么
-
@Jorg 是的,它是一个 highchart.js 图表,但它只是被导入并放置到视图中,并且像普通的 highchart 图表一样运行。没有创建和注册自定义控件。
-
@Jorg 我发现你可以使用
sap.ui.xmlview("Project.view.View")来获取视图,但这似乎会创建一个新视图,并且与当前视图的 id 不同。如何使用正确的 id 获取当前视图?
标签: javascript sapui5