去抖动无限滚动以避免过多的调用

时间:2016-12-12 04:31:51

标签: javascript angularjs lodash

这是一个自定义指令,试图使用lodash的去抖但没有'工作。我可以删除debounce但是在我的网络中,当用户滚动到页面底部时,会有额外的2-4个调用。怎么解决这个问题?

angular.module('app')
  .directive('checkBottom', function($document, $window) {
    return function(scope, elm, attr) {
      $document.bind('scroll', function() {
        if( ($window.innerHeight + $window.scrollY) > $document.innerHeight() - 50) {
          _.debounce(applyFunc, 100 ); // this don't work?

          function applyFunc(){
            scope.$apply(attr.checkBottom);
          }
        }
      });
    };
  });

1 个答案:

答案 0 :(得分:1)

_.debounce()创建一个供以后使用的功能;它不是你打电话来调用你的功能的东西。根据{{​​3}},您可以像这样使用它:

var applyFunc = applyFunc(){
  scope.$apply(attr.checkBottom);
}

var debouncedApplyFunc = _.debounce(applyFunc, 100 );

angular.module('app')
  .directive('checkBottom', function($document, $window) {
    return function(scope, elm, attr) {
      $document.bind('scroll', function() {
        if( ($window.innerHeight + $window.scrollY) > $document.innerHeight() - 50) {
          debouncedApplyFunc();
        }
      });
    };
  });