Javascript Angularjs范围。$适用于指令';滚动侦听器
我使用下面的指令来确定用户是否已滚动到页面底部-150px,并设置正在侦听的范围变量,然后加载下面的页面。它很好用 我关心的是作用域.$apply()被多次调用。我需要调用$apply()才能使指令工作,但我不确定多次调用是否会导致问题 有什么想法吗 多谢各位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
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位于底部时,我将如何加载更多页面?