2013-12-23 34 views
0

我试图实现一个无限的滚动指令。当页面第一次加载并滚动时,我在控制台上看到日志。然而,在最初的滚动之后,它不再发生。就像它只做了一次。角度指令停止射击

我哪里错了?

指令:

directives.directive('ngScrolled', function() { 
     return function(scope, elm, attr) { 
      var raw = elm[0]; 

      elm.bind('scroll', function() { 
       console.log('scroll direct'); 

       if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { 
        scope.$apply(attr.ngScrolled); 
       } 
      }); 
     }; 
    }); 

HTML:

<div class="col-md-7 col-lg-7" ng-style="resultsHolder" ng-include="'partials/resultCell.html'" ng-scrolled="loadMore()"></div> 
+3

有没有可能'div'实际上只滚动一次而其他滚动事件正在更高级别的对象中发生?小提琴会帮助! –

回答

1

由于NuclearGhost在评论中提到,它可能是滚动事件不会解雇你对指令的元素。

确保你有一个包装器/容器元素的高度设置为正确的溢出集。

这里有一个fiddle有效的你的指示为书面,它的工作原理。如果包装div不存在,它将不起作用。

<body ng-app="app" ng-controller="main"> 
    <div class="scroller" infinite-scroll="more()"> 
     <div class="item" ng-repeat="item in items">{{item}}</div> 
    </div> 
</body>