$http.post 仅在 angular.forEach 的最后一个循环中触发

$http.post triggered only on the last loop on angular.forEach

我在 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();
});

我认为 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 的语法。