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

07-24 16:25