Javascript AngularJS窗口滚动事件未触发

Javascript AngularJS窗口滚动事件未触发,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我知道在这个问题上也有一些类似的问题,但是我认为没有一个解决方案可以帮助我 我正在使用AngularJS,希望检测滚动事件。关于如何获取事件,我尝试了很多版本,但最多在第一次加载时触发,然后再也不会触发 我最后尝试的代码如下: $($window).on('scroll', alert('scrolled')); 但我也试过: 或者只是简单的JQuery.scroll()事件 window.onscroll=功能(ev) 还有更多,但没有任何效果 有人能告诉我我做错了什么吗 更新:我尝试

我知道在这个问题上也有一些类似的问题,但是我认为没有一个解决方案可以帮助我

我正在使用AngularJS,希望检测滚动事件。关于如何获取事件,我尝试了很多版本,但最多在第一次加载时触发,然后再也不会触发

我最后尝试的代码如下:

$($window).on('scroll', alert('scrolled'));
但我也试过:

  • 或者只是简单的JQuery.scroll()事件
  • window.onscroll=功能(ev)
还有更多,但没有任何效果

有人能告诉我我做错了什么吗

更新:我尝试了指令的东西,这在safari上运行得很好,但在chrome上不行。发生什么事了

更新2:当使用shift键时,它与chrome mobile视图一起工作。chrome对apple触控板有任何限制吗?WTF?

我会用

$(window).scroll(function () { alert('scrolled') })
或者你可以用

angular.element($window).bind("scroll", function(e) {
    alert('scrolled')
})

不需要使用angular.element() 将$window注入控制器, 使用window.onscroll事件

$window.onscroll=函数(){
log('窗口被滚动!');

};

我认为这可能取决于您在何处使用此代码。在控制器中,在指令链接中,等等。您可以发布更多的代码吗?在您添加事件侦听器时,dom可能还没有准备好。将它添加到指令的链接方法中,它应该可以工作。请看一下答案。Angular有一些内置的jquery功能,使用Angular.elementokay与Safari一起使用,但不与chrome一起使用。知道为什么会这样吗?如何修复它?请尝试使用jsfiddle中所示的指令。这将确保您的侦听器不会创建得太迟或太早。