如何检查是否必须停止调用loadMore()
函数,因为所有文档都已从数据库加载?
在下面的示例中,我使用的是Ionic,但在AngularJS应用程序中使用ng-infinite-scroll也是如此。
这是我的实际代码:
HTML:
...
<ion-infinite-scroll
ng-if="!noMoreItemsToLoad"
on-infinite="loadMore()"
distance="5%">
</ion-infinite-scroll>
</ion-content>
JS控制器:
$scope.loadMore = function(){
console.log('Loading more docs...');
Items.loadMore(); // calling the .next() method inside the Items service
if( !Items.hasNext()) { $scope.noMoreItemsToLoad = true; }
$scope.$broadcast('scroll.infiniteScrollComplete');
}
JS项目工厂:
.factory('Items', function (FIREBASE_URL, $firebaseArray, $firebaseObject) {
var itemsRef = new Firebase(FIREBASE_URL + 'items/');
var scrollRef = new Firebase.util.Scroll(itemsRef, 'name');
var self = {
getAllItems : function(){ ... },
loadMore: function(){
scrollRef.scroll.next(4);
},
hasNext: function(){
if(scrollRef.scroll.hasNext()) { return true; }
else { return false; }
}
}
return self;
}
答案 0 :(得分:1)
在超时时执行scroll.next
,例如:
loadMore: function(){
$timeout(function() {
scrollRef.scroll.next(4);
});
},
答案 1 :(得分:0)
我有同样的问题,我认为解决方法是修改firebase.util.js上的hasNext()函数:
Cache.prototype.hasNext = function() {
return this.count === -1 || this.endCount >= this.start + this.count;
};
我在 this.start
之前放了一个缺少等号(=)我希望它适合你。