angular浏览器滚动条滚动到指定element 触发事件

angular.module('app').directive('ScrollTrigger', () => {
    return {
      restrict: "A",
      link:function ($scope,$element,$attrs,$controller) {
        function debounce(fn, delay) {
          let timer = null;
          return function () {
            let context = this;
            let args = arguments;
            clearTimeout(timer);
            timer = setTimeout(function () {
              fn.apply(context, args);
            }, delay);
          }
        }
        let trigger=debounce(() => {
          if ($element.is(":hidden")) {
            return;
          }
          if (($(window).scrollTop() + $(window).height()) > ($element.offset().top + 5)) {
            if (!$scope.$eval($attrs.zScrollTrigger)) {
              $element.trigger("click");
            }
          }
        }, 100);
        $(window).scroll(trigger);
        $scope.$on("destroy",()=>{
          $(window).unbind("scroll",trigger);
        })
      }
    }
  })

 

posted @ 2017-03-15 13:40  N1900  阅读(4195)  评论(0编辑  收藏  举报