angular:绑定到滚动事件不起作用

时间:2014-11-11 02:55:34

标签: javascript angularjs angularjs-directive bind

我想跟随这个jsfiddle:

http://jsfiddle.net/vojtajina/U7Bz9/

现在我在我的脚本文件中有这个:

var app = angular.module('my-app', [
       'scroll',
       'ui.bootstrap',
       'ngRoute']);

var scrollService = angular.module('scroll', []).directive('whenScrolled', function() {
    return function(scope, elm, attr) {
        var raw = elm[0];
        console.log("binding");

        elm.bind('scroll', function() {
          console.log("scrolling");
            if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
                scope.$apply(attr.whenScrolled);
            }
        });
    };
});

HTML文件(以jade表示法)具有: 编辑:我添加了一个id和CSS

div#lista_iniciativas.row(when-scrolled="loadMore()")

然后

#lista_iniciativas {
  overflow: auto;
}

`

我能看到"绑定"登录控制台,但从不滚动"甚至调试我永远不会进入绑定功能......换句话说,绑定功能永远不会触发。知道这里有什么问题吗?我绑错了吗?

1 个答案:

答案 0 :(得分:0)

这是我发现对我有用的东西。

这可能不是最好的解决方案,并且@rahpuser报告原始帖子中的代码实际上正在工作......所以....

var scrollService = app.directive('whenScrolled', function($document, $window) {
    return function(scope, elm, attr) {
        var raw = elm[0];

        $document.bind( 'scroll', function() {
          if( ($window.innerHeight + $window.scrollY) > getDocHeight() - 100) {
                scope.$apply(attr.whenScrolled);
          } 
        });
    };
});