1

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;

}
4

2 に答える 2

1

タイムアウトで実行しますscroll.next。たとえば、次のようにします。

 loadMore: function(){
   $timeout(function() {
     scrollRef.scroll.next(4);
   });
 },
于 2016-12-28T15:40:58.670 に答える