SAPUI5 addEventListener在加载时调用函数而不是在声明的事件上调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAPUI5 addEventListener在加载时调用函数而不是在声明的事件上调用相关的知识,希望对你有一定的参考价值。

我在我的控制器中有一个以按钮为目标的函数,然后附加一个事件监听器,它应该在click事件上调用一个函数,但它在页面加载时自动调用它。

如何将其更改为仅在单击goBtn时调用该函数?

onAfterRendering: function() {
    var goBtn = document.getElementById('__xmlview1--smartFilterId-btnGo');
    console.log("goBtn = ", goBtn); 
    goBtn.addEventListener("click", this._onGoClick(event), false);
},

_onGoClick: function(event) {
    console.log("Event attaaaaached!!! = ", event);
    // do something else
},
答案

问题是您已经在评估事件处理程序了。这会立即调用_onGoClick方法(一旦达到此行)。

goBtn.addEventListener("click", this._onGoClick(event), false);

你想要做的是将函数传递给稍后调用的addEventListener

goBtn.addEventListener("click", this._onGoClick, false);

另一方面,您的代码意味着在不久的将来中断。 id __xmlview1--smartFilterId-btnGo是动态创建的,只要您在不同的上下文中启动应用程序,就可以更改。

以上是关于SAPUI5 addEventListener在加载时调用函数而不是在声明的事件上调用的主要内容,如果未能解决你的问题,请参考以下文章

SAPUI5 多重聚合绑定

Sapui5:如果有oData参数,如何将oData服务绑定到SAPUI5表

SAPUI5使用了哪些开源技术

SAPUI5 XML 视图文本不可见

SAPUI5教程——框架简介以及应用实践

嵌套路由 SAPUI5