我有一个指令,它应该检测每个父元素上的scroll-event。可滚动的元素可以是带有overflow:scroll的div,也可以是浏览器窗口本身。所以这个解决方案并不适用于所有情况:
overflow:scroll
angular.element($window).bind("scroll", function() { ... });
jchrr9hc1#
您需要在捕获阶段侦听scroll事件。为此,请将true作为addEventListener的第三个参数传递:
true
addEventListener
document.getElementById('parent').addEventListener('scroll', () => { console.log('scrolling'); }, true);
当我用上面的代码替换javascript时,您的示例可以正常工作,并且没有jQuery依赖性。
mrzz3bfm2#
您需要为div元素添加一些特定的高度以进行滚动例如:
div{ height: 350px; // Specify div height as you want overflow: scroll; }
2hh7jdfx3#
好吧,我找到解决办法了。就是:
angular.element(document.querySelectorAll('*')).bind("scroll", $scope.myFunction);
3条答案
按热度按时间jchrr9hc1#
您需要在捕获阶段侦听scroll事件。为此,请将
true
作为addEventListener
的第三个参数传递:当我用上面的代码替换javascript时,您的示例可以正常工作,并且没有jQuery依赖性。
mrzz3bfm2#
您需要为div元素添加一些特定的高度以进行滚动
例如:
2hh7jdfx3#
好吧,我找到解决办法了。就是: