我正在使用以下指令来确定用户是否已滚动到页面底部 - 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;
});
}
};
});
答案 0 :(得分:0)
这是一个条件,所以我不认为它有问题。为了提高性能,还要检查是否scope.requestPage === false
,因为如果情况已经如此,则无需将其更改为true。在单独的方法中处理条件以整理代码可能会很好。顺便说一下,我注意到滚动手表在资源方面非常昂贵,我建议在移动设备上禁用它。