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

标签 javascript sapui5 listener dom-events

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

如何更改此设置以仅在单击 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 是动态创建的,一旦您在不同的上下文中启动应用程序,该 ID 就会发生变化。

关于javascript - SAPUI5 addEventListener 在加载时调用函数,而不是在声明的事件上调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323979/

相关文章:

javascript - 用新的 HTML 内容替换每个出现的单词

javascript - 连接多个 UI5 项目

javascript - SAPUI5 中的 jQuery 日期选择器

sockets - 如何监听 ICMP 数据包?

javascript - npm 命令不显示任何输出或结果

javascript - 如何让不相关的组件影响主 App 状态?

Javascript - 覆盖对象内的属性(不是方法)

javascript - OpenUI5 将属性与函数绑定(bind),而不是直接访问

android - 从所有按钮中删除点击监听器?

android - 如何听软键盘中的按键?