2016-07-21 3 views
1

私は無限のスクロールを実装しています。私は$http.get()メソッドからデータを取得する配列hotelsを持っています。新しいarrayという名前のhotelsNew[]に値hotelsの値を設定したいとします。しかし、私はhotelsNewの値を増やしてmjの値を押したいと思います。関数が呼び出されるたびに、配列内の要素をどのようにプッシュできますか?

loadMore()が呼び出されるたびに、mjの値を更新(増分)する必要があります。 mの初期値は0で、jは5です。loadMore()が呼び出されると、mは5になり、jは10となります。

$http.get()が非同期であるため、mjの値をどこに保存することはできません。 mjの値を保存し、loadMore()が再び呼び出されたときに再利用する方法はありますか?最大jの値は40です。m = j(40)のときは停止します。

ここに私のコントローラコードです。

$scope.loadMore = function() { 
     $http.get(url).success(function(data, status, headers, config) { 
     if(data) { 
      $scope.hotels = data.hotels; 
      for(var i = m; i < j; i++) { 
       console.log('i=',i); 
       $scope.hotelsNew.push($scope.hotels[i]); 
       console.log('hotelsNew',$scope.hotelsNew); 
      } 
     } 
    } 

どのように私はmj値をインクリメントすることができますか?任意のアイデアを?

+0

「m」と「j」はどれくらい増分されますか?それは固定値ですか? –

+0

jの最大値は40(固定)にすることができます。m = jの場合、loadMore()関数が呼び出されても、更新は終了します。 –

答えて

1

を避けるために約束を使用あなたのコントローラにローカル変数を作成することができます。

var m = 0, j = 5; 
$scope.loadMore = function() { 
    $http.get(url).success(function(data, status, headers, config) { 
     if(data && j < 40) { 
      $scope.hotels = data.hotels; 
      for(var i = m; i < j; i++) { 
       console.log('i=',i); 
       $scope.hotelsNew.push($scope.hotels[i]); 
       console.log('hotelsNew',$scope.hotelsNew); 
      } 
      m += 5; 
      j += 5; 
     } 
    } 
} 
-1

アレイをプッシュするための例を参照してください

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 

fruits.push( "キウイ")。

$ S = Array.sizeof($データ)を使用して、データの

GET長

for($i<0;$i<=$s;$i++){//task here} 
+0

mとjの値をどのように増やすことができますか? –

0

mjずつ同じ場合は非同期呼び出し

$scope.loadMore = function() { 
    $http.get(url).then(function(data) { 
    if(data) { 
     $scope.hotels = data.hotels; 
     for(var i = m; i < j; i++) { 
      console.log('i=',i); 
      $scope.hotelsNew.push($scope.hotels[i]); 
      console.log('hotelsNew',$scope.hotelsNew); 
     } 
    } 
} 
関連する問題