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

标签 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);
          }
        }
      });
    };
  });

最佳答案

_.debounce() 创建一个函数供您以后使用;它不是您调用函数来调用的东西。基于documentation ,你可以像这样使用它:

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();
        }
      });
    };
  });

关于javascript - 无限滚动去抖以避免过多调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41094256/

相关文章:

javascript - 如何在 ui-router 中使用单独的模板?

javascript - 在 Javascript/Lodash 中过滤对象数组中的多个字段

javascript - AngularJs : Call controller function bound to 'this' from outside(eg. 浏览器控制台)

javascript - JSON.stringify lodash 合并对象的结果时出现 IE11 错误

javascript - Lodash 根据选定的键创建新数组

javascript - SweetAlert 结合 ajax

javascript - 当服务器有新数据时更新 localStorage 吗?

javascript - 具有多个字段的表单提交

javascript - AngularJs 将模型值+模型名称传递给 Controller ​​中的函数

javascript - 如何在 Angular 中添加本地存储?