我试图在作为事件处理程序传递给angular.element($window).on()
.
从这个问题,我开始意识到,要解除与当前指令的绑定,必须将相同的事件处理程序传递给angular.element().on()
两者angular.element().off()
AngularJS - 从特定指令解除事件的 $window 绑定。
这是指令返回的对象中的我的控制器方法;
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()
and.off()
函数,但是我意识到这this
并没有引用eventHandler
函数,因此我用.bind(eventHandler)
.