我有一个AngularJS项目(我不使用JQuery),我需要显示一个用户的表格,并在用户滚动页面附近时加载更多。我试图在不依赖外部库的情况下实现这一点,因为这是我的要求的一部分。如何正确实现无JQuery滚动的AngularJS表?
但到目前为止,我没有检查过的例子帮助我实现了无限滚动,如我所料。他们使用不同的方式来计算何时触发调用,其中一些值返回给我未定义(即人们说clientHeight和scrollHeight有不同的值,但对我来说它总是相同的,总高度包括滚动空间)。
我创建像下面这样的指令:
usersModule.directive('whenScrollEnds', function($window) {
return {
restrict: "A",
link: function(scope, elm, attr) {
angular.element($window).bind('scroll', function() {
var hiddenContentHeight = elm[0].scrollHeight - angular.element($window)[0].innerHeight;
if ((hiddenContentHeight - angular.element($window)[0].scrollY) <= (10)) {
angular.element($window)[0].requestAnimationFrame(function(){
scope.$apply(attr.whenScrollEnds);
})
}
});
}
};
});
这类作品,但有下列问题/疑虑,我希望有人能向我解释:
- 它触发太快。当我接近可滚动空间的底部时,我想要触发加载,例如接近90%左右。
- scrollHeight只能通过elm [0]访问,angular.element($ window)[0]没有scrollHeight属性,所以它返回undefined,而elm [0]没有scrollY值。
- 我得到的scrollY值是滚动条从顶部移动的距离减去滚动条的长度,但我觉得这个值是错误的。
- 通过angular.element($ window)绑定滚动事件.bind正确的决定?
我该如何实现一个合适的无限滚动表?我使用了正确的变量吗?请提供仅使用Javascript和AngularJS的答案,JQuery或库解决方案不会帮助我。