我正在尝试实现无限滚动指令。当页面首次加载并滚动时,我会在控制台上看到日志。但是在初始滚动之后,它不会再发生了。这就像它只做了一次。
我哪里错了?
指令:
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>
答案 0 :(得分: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>