Angular.forEach 上的错误与 value.split 不是一个函数



我想获取$HTTP的响应并将其映射到一个空对象。这是我尝试过的

主要代码

function myData( myUrl) {
         $http({
                method: 'POST',
                 url: "http://localhost:8085/api/foo",
                data: $scope.myUrl,     
        })
         .then(
            function successCall(response) {
                $scope.resultForRecord=response;
                $scope.obj=[];
                angular.forEach(response,function (valueToObj,key) {
                $scope.obj.push(
                    {'key' : $scope.resultForRecord.toString().split("=")[0],'value' : $scope.resultForRecord.toString().split("=")[1]})});
                        console.log($scope.obj);
            },
            function errorCall(response) {                            
                console.log(response);
                $scope.resultForRecord=response;
            });
        }

并且错误是valueToObj.split不是一个函数

现在我已经尝试了硬编码的练习演示。效果很好。这是演示

演示:

angular.module('app')
  .controller('MainCtrl', function ($scope) {
       $scope.dataSet=[
          "jon=12",
          "petter=10",
          "sara=8"
      ];
      $scope.obj=[];
      angular.forEach($scope.dataSet,function (key,value) {
          $scope.obj.push(
              {'name' : key.split("=")[0],'age' : key.split("=")[1]}
            );
    });
      console.log($scope.dataSet);
      console.log($scope.obj);
  });

我该如何解决这个问题? 提前致谢

angular.forEach(response, function(valueToObj, key) {
  $scope.obj.push(
    {
      'key' : $scope.resultForRecord.toString().split("=")[0],
      'value' : $scope.resultForRecord.toString().split("=")[1]
    }
  );
});

我重新格式化了您的代码以使其更清晰。

阅读该代码:

  1. 您正在迭代response的所有领域。 response是 HTTP 响应对象,它有 4 个字段:状态(数字(、标头、数据、配置。您实际上希望遍历作为响应主体发送的 JSON 对象的元素 ( response.data (;
  2. 您甚至没有对函数内的当前元素执行任何操作。您不是拆分valueToObj,而是拆分$scope.resultForRecord.toString()。因此,您多次拆分同一事物,而该内容再次是整个HTTP响应的字符串表示形式。

您最可能想要的是:

angular.forEach(response.data, function(element) {
  $scope.obj.push(
    {
      'key' : element.split("=")[0],
      'value' : element.split("=")[1]
    }
  );
});

或者,更清洁:

$scope.obj = response.data.map(function(element) {
  var parts = element.split("=");
  return {
    key: parts[0],
    value: parts[1]
  };
});

.split 需要一个字符串。

您正在使用 .. 迭代数组。

valueToObj.split

这假设每次迭代值ToObj都是一个字符串。但是,如果它不是字符串,则该函数将不存在,您将收到此错误。这是因为 split 函数仅存在于字符串上。

最新更新