2016-10-24 1 views
2

Wie übermittle ich einen inkrementellen Wert in die Funktion $ http.get. Siehe unten für die Code-Schnipsel:

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); 
       }); 
      } 
     }) 

Ich erhalte „Der Wert für den Index ist: undefined“ und es macht mich verrückt!

Dank

Antwort

3

Das Problem ist, dass Ihr erstes durch die Zeit (und in der Tat alle) Ihr success Rückrufe Feuer $scope.index den Wert 5 hat, die vermutlich außerhalb des Bereichs von $scope.userActivity Array ist.

Eine Möglichkeit, dies zu lösen, ist ein IIFE wird

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); 
    } 

Diese andere Stackoverflow Q/A Sie mehr zu verwenden, geben Detail im Detail: JavaScript closure inside loops – simple practical example

+0

Arbeitete wie ein Charme Knospe !! Vielen Dank Mann –

2

Closures zu retten, Ihre index, die nicht ist synchron mit der mit $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

Danke für die Antwort Kumpel. Wie ich im Kommentar oben gesagt habe, hat es den Trick gemacht. Hoch geschätzt –

Verwandte Themen