2017-02-04 1 views
0

私はそれを働かせることができません。私はng-repeatを使用している間にをスクロールするときに同時に10個のアイテムを表示しようとしています(最初は10とスクロールしてから10個の新しいアイテム)。私が何をしても、私はそれを見ることができません。Ionicで無限スクロールを使用しているときにスピナーを追加するにはどうすればいいですか?

HTML:

<li class="item" ng-repeat="schedule in Schedules | filter:scheduleSearch | limitTo:numberOfItemsToDisplay | orderBy: 'namesAlphabet' as names"> 
    Display some data 
</li> 
<ion-infinite-scroll on-infinite="addMoreItem()" ng-if="Schedules.length > numberOfItemsToDisplay"></ion-infinite-scroll> 

マイコントローラ:

$scope.numberOfItemsToDisplay = 10; // Use it with limit to in ng-repeat 
$scope.addMoreItem = function(done) { 
    if ($scope.Schedules.length > $scope.numberOfItemsToDisplay) 
     $scope.numberOfItemsToDisplay += 10; // load number of more items 
     $scope.$broadcast('scroll.infiniteScrollComplete') 
} 

私はこれをどのように行うことができますか?スクロールをアイコンにバインドする方法はありますか?

+0

チェックionic.app.cssこれらの行 'コードイオン無限スクロール.icon { 色含む:#666666を、 font-size:30px; 色:#666666; } イオン無限スクロール:not(.active).spinner、 ion-infinite-scroll:not(.active).icon:before { ディスプレイ:なし; } ' –

+0

はい、それはどういう意味ですか?どのように実装できますか? – Siyah

+0

@Siyahあなたはアイテムが 'ion-infinite-scroll'を使ってロードされているが、ロードがより多く表示されていないことを意味しますか? – whyyie

答えて

1

ロード中のアイコンが表示される前に、アイテムがあまりにも速く読み込まれ、infiniteScrollCompleteがブロードキャストされていると思われます。

このような状況でロードアイコンが表示されるようにしたい場合は、$timeoutを追加してください。

$scope.addMoreItem = function(done) { 
    $timeout(function() { 
     if ($scope.Schedules.length > $scope.numberOfItemsToDisplay) 
      $scope.numberOfItemsToDisplay += 10; // load number of more items 
      $scope.$broadcast('scroll.infiniteScrollComplete') 
    }, 2000); 
} 
+0

ありがとう、whyyie。 ng-repeatのリスト項目は、特定の順序で並べられます。私は、このスニペットを使用すると、リストアイテムの順序が乱れることに気がつきました(最後に表示され、最初に表示され、他のアイテムを読み込んだ後に戻ります)。注文/階層を維持する方法は? – Siyah

+0

それはそれが最初に(4つのアイテムと言う)と2秒後、それは私がまだスクロールしていない間に他のすべてを直接表示するので、それは正常に動作していないのですか?それは起こってはならないでしょう、そうですか?私はスクロールした後にそれらを問​​い合わせるようにします。 – Siyah

+0

@Siyahをフルコードサンプルに再現できますか?スピナーが出てきましたか? – whyyie

関連する問題