我試圖在作爲事件處理程序傳遞給angular.element($window).on()
的函數中,在我的AngularJS指令中解除綁定事件。AngularJS - 在同一個函數中的綁定事件綁定?
從這個問題,我已經認識到,僅僅從目前的指令解除綁定,相同的事件處理程序必須被傳遞到兩個angular.element().on()
和angular.element().off()
AngularJS - Unbind $window of an event from specific directive。
這是我的控制器方法中由指令返回的對象;
controller: function($scope, $element) {
var eventHandler = function() {
var windowBottom = $window.pageYOffset + $window.innerHeight;
var elementBottom = $element[0].getBoundingClientRect().bottom;
if (windowBottom > elementBottom) {
console.log($scope.stockID, this);
angular.element($window).off('scroll', this.bind(this));
}
};
angular.element($window).on('scroll', eventHandler.bind(eventHandler));
}
任何幫助理解爲什麼這是無法解除事件將不勝感激!
注:我最初試圖只是eventHandler
傳遞到兩個.on()
和.off()
功能,但我意識到,this
沒有引用eventHandler
功能,因此爲什麼我和.bind(eventHandler)
的說法。
一次可以在頁面上有多個控制器。我在這裏看到內存泄漏,如果事件在每次實例化這些控制器時都受到約束,並且沒有任何事物保證它們將被刪除。一旦範圍被銷燬,您也許想要移除該事件。 – arjabbar