2017-07-15 68 views
0

我似乎被卡住了。EventListener正確地啓動,除非用匿名函數包裝,然後阻止RemoveEventListener

我有以下事件偵聽器:

window.addEventListener('scroll',scrollEventListener(scope,element,attrs,WallService,$state)) 

如果我這樣做,它運行的時候了,即使沒有滾動。

所以我把它包:

window.addEventListener('scroll',function(){scrollEventListener(scope,element,attrs,WallService,$state)}) 

但現在我不能引用它:

window.removeEventListener("scroll",scrollEventListener); 

我如何添加一個eventlistner適當的話,將不會觸發馬上,我可以仍然引用,以便我可以刪除監聽器。

我使用AngularJS和要刪除的監聽器,因爲它應該只與指令存在,即,它是這樣的:

scope.$on("$destroy", function() { 
    window.removeEventListener("scroll",scrollEventListener); 
    }); 

回答

1

,因爲你不是調用它。試試這個:

var scrollEvent = function(){scrollEventListener (<call with args>)}; 

OR

var scrollEvent = scrollEventListener.bind(this, <args separate by comma>) 

然後

window.addEventListener('scroll',scrollEvent); 
...... 
...... 
window.removeEventListener('scroll',scrollEvent); 

就足以

+0

怎麼樣我需要傳遞的參數? –

+0

好的,然後讓我爲你編輯它。 –