2016-10-24 7 views
2

$ http.get関数に増分値を渡すにはどうすればよいですか?コードスニペットは、以下を参照してください:

for($scope.index=0 ; $scope.index < 5 ; $scope.index++) 

     { 
      $http.get('/api/post', {params: { id: $scope.userActivity[$scope.index].post }}) 
       .success(function(res){ 
        console.log('The value for index is: ' + $scope.userActivity[$scope.index]); 
       }) 
       .error(function(data, status){ 
        console.log(data); 
       }); 
      } 
     }) 

私は「インデックスの値は次のとおりです。未定義」取得していますし、それは私にナットを運転しています!

おかげ

答えて

3

問題は、時間によってあなたの最初の(そして実際にはすべての)あなたのsuccessコールバックの火災$scope.index$scope.userActivity配列の範囲外と考えられる値5を持っているということです。 JavaScript closure inside loops – simple practical example

+0

チャームブームのように働いています!おかげでたくさんの男 –

2

Closuresを救うために、あなたのindexされていない。これを解決する

一つの方法は、この他のStackOverflowのQ/Aはあなたより詳細なディテールを与える

for($scope.index=0 ; $scope.index < 5 ; $scope.index++) 

    { 
     (function(i){ 
     $http.get('/api/post', {params: { id: $scope.userActivity[i].post }}) 
      .success(function(res){ 
       console.log('The value for index is: ' + $scope.userActivity[i]); 
      }) 
      .error(function(data, status){ 
       console.log(data); 
      }); 
     } 
     }) 
    })($scope.index); 
    } 

生命維持を使用することですと同期して$scope.userActivity

for ($scope.index = 0; $scope.index < 5; $scope.index++){ 
    (function(i) { 
     $http.get('/api/post', { 
       params: { 
        id: $scope.userActivity[$scope.index].post 
       } 
      }) 
      .success(function(res) { 
       console.log('The value for index is: ' + $scope.userActivity[$scope.index]); 
      }) 
      .error(function(data, status) { 
       console.log(data); 
      }); 
    }($scope.index)) 
} 
+0

答えのおかげでありがとう。私が上記のコメントで言ったように、それはトリックでした。高く評価 –

関連する問題