我的 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/