如何检查是否所有文档都加载了Firebase.util分页

时间:2016-02-08 13:19:21

标签: javascript angularjs ionic-framework firebase firebase-util

如何检查是否必须停止调用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;

}

2 个答案:

答案 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

之前放了一个缺少等号(=)

我希望它适合你。