使用$ scope。$ on在AngularJS中滚动事件

时间:2018-01-02 15:17:35

标签: javascript angularjs performance events

有没有办法捕捉滚动页面的事件在控制器内? 我在我的组件控制器$ onInit上有这个:

$scope.$on('scroll', function() {
        console.log('Something something');
      });

我只是在指令上看到了使用.bind()的方法,例如:Scroll event in AngularJS

我一直潜伏着官方指南而我什么也没找到。

2 个答案:

答案 0 :(得分:0)

您可以向链接到的指令添加属性,以便从控制器接收函数,以便在滚动发生时调用

.directive("scroll", function () {
return {
  restrict: 'A',
  scope : {
         "onScroll" : "&onScroll"
  },
  link: function(scope, element, attrs) {
      element.bind("wheel", function() {
         scope.onScroll();
      });
  }
}
});

然后在模板中,您将在属性值

中传递它
<ul scroll on-scroll="myController.onScroll()">
</ul>

答案 1 :(得分:0)

您可以使用angularJS的$element来正确执行此操作。

angular.element($element).on('scroll', function() {
  console.log('Something something');
});

在控制器中,$element是控制器绑定的DOM中的元素。