我在控制器中有两个功能,其中一个用于处理某些事件,例如单击按钮。
这很好用:
handleUploadPress: function(oEvent) {
var oFileUploader = this.byId("streamerUploader");
if (!oFileUploader.getValue()) {
MessageToast.show("Choose file");
return;
}
这引发了错误:
showResponse: function(id, response) {
this.byId("streamerUploader").someMethod();
}
在两个函数中,“ this”均等于事件提供者,但是this.byId()在第二个函数中返回undefined。是什么原因?
答案 0 :(得分:1)
此不会指向控制器。
您的 handleUploadPress()方法大概是一个事件处理程序,用于处理文件上载按钮的按下。该方法的所有者是控制器,调用 this.byId(...)的行为将与预期的一样-它将在视图中返回具有指定ID的组件。
但是,在您的回调方法中, this 不是控制器。方法 this.byId 未定义-这是由SAP UI5控制器定义的方法。
您需要做什么
在使用 req.then(...)发送请求之前,声明一个变量,其值为您需要访问的 this ,例如:
var that = this;
然后,要使用 byId 方法,请使用此变量。
that.byId(...).doSomeMethod();
我建议您阅读this question and answers,以详细了解Java脚本中的 this 。