我有一個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或庫解決方案不會幫助我。