this.byId()返回未定义

时间:2018-08-07 06:52:27

标签: sapui5

我在控制器中有两个功能,其中一个用于处理某些事件,例如单击按钮。

这很好用:

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。是什么原因?

1 个答案:

答案 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