2016-07-11 56 views
0

我正在嘗試創建分頁功能,但感覺卡住了。我不知道如果我在正確的軌道上......離子分頁開始

在我看來

,我有一個NG重複=「在結果資源」,並在頁面的最後,我把以下內容:

<ion-infinite-scroll on-infinite="loadMore()" distance="1%"></ion-infinite-scroll> 

然後在控制器,我寫這樣的:

var i=1; 
    $http.get("http://website/search/"+i).success(function(response){ 
     i++; 
    $scope.result=(response) 
    }); 

    } 

每個頁面返回一個包含15個元素一個JSON。我想要做的是當我到達最後,我想加載下一個15的結果來顯示。

回答

0

你必須在下一個15項loadMore功能控制器獲取你寫on-infinite="loadMore()"ion-infinite-scroll

寫入功能爲您的控制器遵循

$scope.result = []; 
var i=1; 
$scope.loadMore = function(){ 
    $http.get("http://website/search/"+i).success(function(response){ 
     i++; 
     $scope.result.push(response); 
    }); 
} 

Check Example

+0

它不工作,我安慰。它似乎沒有推動:/ –

+0

檢查鏈接中給出的例子,並嘗試按照此 –

0

名氏如何我已經實現infinite-scroll在我的應用程序中

<ion-infinite-scroll ng-if="!loadMorePeople" on-infinite="loadPeople()" distance="1%"></ion-infinite-scroll> 

loadPeople()加載所有滾動的數據,它的代碼是波紋管

$scope.loadMorePeople=false; 


$scope.loadPeople = function() { 

     if($scope.peoples != null){ 

      $http({ 
       method: "get", 
       url: baseUrl+"company-members?page="+$scope.pagePeople, 
       withCredentials: true, 
       headers: { 
       'Accept' : 'application/json, text/plain, */*', 
       'Authorization' : ''+window.localStorage.getItem("token_type")+' '+window.localStorage.getItem("token") 
       } 
      }) 
       .success(function(data) { 

        if(data.length > 0){ 

         var newPeople = data; 
         $scope.temp = $scope.peoples.concat(newPeople); 
         $scope.peoples = arrayUnique($scope.temp, 'id'); 

         function arrayUnique(collection, keyname) { 
          var output = [], 
           keys = []; 

          angular.forEach(collection, function(item) { 
           var key = item[keyname]; 
           if(keys.indexOf(key) === -1) { 
            keys.push(key); 
            output.push(item); 
           } 
          }); 
          return output; 
         }; 

         ++$scope.pagePeople; 
         $scope.$broadcast("scroll.infiniteScrollComplete"); 

        }else{ 
         $scope.loadMorePeople=true; 
         $scope.$broadcast("scroll.infiniteScrollComplete"); 
        } 

       }) 
       .error(function(data, status) { 
       }); 
      } 

      $scope.$broadcast("scroll.infiniteScrollComplete"); 

    }; 

我也有同樣的問題,因爲你由於某種原因.push()沒有工作,所以我做了這個解決辦法。

我把data檢查,如果它不是在if(data.length > 0){}空,然後用.concat(newPeople)合併它們,最後用arrayUnique($scope.temp, 'id'),以確保沒有重複的實體。

使用ng-if="!loadMorePeople"它也是一個好主意,如果沒有數據留下來取回,呼叫將繼續進行,這有助於停止呼叫。

我希望這可以解決您的問題。讓我知道如果你需要任何幫助:D