2015-01-04 65 views
0

我在angularjs的forEach循環中發出$ http.post請求時出現問題。只有在最後一個循環(obj.dtype =='Install')時纔會觸發$ http.post。我如何能夠使$ http.post在每個循環上都能工作?

angular.forEach($scope.data, function(obj, i){ 
    if(obj.dtype == 'Remove'){ 
    $http.post('url1').success(); 
    } else if(obj.dtype == 'Install'){ 
    $http.post('url2').success(); 
    } 
}); 

在此先感謝。

解決方案:

angular.forEach($scope.data, function(obj, i){ 
    if(obj.dtype == 'Remove'){ 
    url = 'url1'; 
    dataToUpload = {}; 
    } else if(obj.dtype == 'Install'){ 
    url = 'url2' 
    dataToUpload = {}; 
    } 

$http.post(url, dataToUpload).success(); 
}); 

回答

0

我看沒有錯AngularJs $http POST調用。 以下代碼適用於我在POST四次被觸發的情況。

app.controller('MainCtrl', ['$scope','$http', function($scope, $http) { 
    $scope.name = 'World'; 
    $scope.data = ["Data1","Data2","Data3","Data4"] 

    angular.forEach($scope.data, function(obj, i){ 
    $http({method:'POST', url: 'http://httpbin.org/post', data: obj}). 
     success(function(data, status) { 
      $scope.status = status; 
      $scope.data = data; 
     }). 
     error(function(data, status) { 
      $scope.data = data || "Request failed"; 
      $scope.status = status; 
     }); 
    }); 
}]); 

我建議審查$scope.data內容和$http語法。

+0

foreach循環中的if語句可能是因素嗎?根據數據中的值是什麼類型,發佈2個$ http請求。 – MarkJ

+0

我試着在if語句中放置一個console.log來確定它是否被讀取並且不被繞過。我在控制檯上得到了迴應,它只是$ http.post不知何故被解僱,直到它是最後一個數據。 – MarkJ

+0

嘗試使用'$ http({})'語法而不是'.post'方法。你可以在控制器中添加上面給出的代碼並運行?另外如果可能的話提供確切的代碼。 –

相關問題