我的控制器中有一个针对按钮的函数,然后附加了一个事件侦听器,该事件侦听器应在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
是动态创建的,并且可以在不同的上下文中启动应用程序后立即更改。