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

时间:2015-01-04 04:19:09

标签: angularjs

我在angularjs中的forEach循环上发出$ http.post请求时遇到问题。仅在最后一个循环(obj.dtype =='安装')上触发$ 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();
});

1 个答案:

答案 0 :(得分: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的语法。