Javascript Angularjs范围。$适用于指令';滚动侦听器

Javascript Angularjs范围。$适用于指令';滚动侦听器,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我使用下面的指令来确定用户是否已滚动到页面底部-150px,并设置正在侦听的范围变量,然后加载下面的页面。它很好用 我关心的是作用域.$apply()被多次调用。我需要调用$apply()才能使指令工作,但我不确定多次调用是否会导致问题 有什么想法吗 多谢各位 myMod.directive('scrollDetection', function () { return { restrict: 'AE', link: function postLin

我使用下面的指令来确定用户是否已滚动到页面底部-150px,并设置正在侦听的范围变量,然后加载下面的页面。它很好用

我关心的是作用域.$apply()被多次调用。我需要调用$apply()才能使指令工作,但我不确定多次调用是否会导致问题

有什么想法吗

多谢各位

myMod.directive('scrollDetection', 

function () {

    return {
        restrict: 'AE',
        link: function postLink(scope, element, attrs) {

            var last_scroll_top = 0;

            element.bind("scroll", function() {

                var scroll_top = this.scrollTop,
                    scroll_height = this.scrollHeight,
                    height = this.offsetHeight,
                    offset = 150;

                    if (scroll_top > last_scroll_top) {

                        if ((scroll_top + height + offset) >= scroll_height) {

                            scope.requestPage = true;
                            scope.$apply();

                        }

                    } 

                last_scroll_top = scroll_top;

            });
        }
    };
});

这是在一个条件,所以我认为没有问题。为了提高性能,还应检查if
scope.requestPage===false
,因为如果已经存在,则无需将其更改为true。最好用一个单独的方法处理这些条件来整理代码。顺便说一句,我注意到滚动手表在资源方面非常昂贵,我建议在移动设备上禁用它。

我可以对其进行检查,但有时会多次调用apply()。那是坏习惯吗?另外,如果我在移动设备上禁用scroll,当scroll位于底部时,我将如何加载更多页面?