Angular指令停止触发

时间:2013-12-23 21:33:39

标签: javascript angularjs

我正在尝试实现无限滚动指令。当页面首次加载并滚动时,我会在控制台上看到日志。但是在初始滚动之后,它不会再发生了。这就像它只做了一次。

我哪里错了?

指令:

 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>

1 个答案:

答案 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>