在JSON中对数组的POST请求

时间:2016-02-09 09:59:35

标签: javascript angularjs json

我想使用我的API发布帖子请求。 JSON是这样的:

{
    "_id": "56b8e96xxxxxxxxxx7cd",
    "name": "abc",
    "conditions": [
      {
        "name": "Condition 1"
      },
      {
        "name": "Condition 2"
      }
    ],
    "id": 10
}

以下是角度代码:

app.factory('Cohort', function($resource) {
    return $resource('http://API URL:id') 
});

我使用以下角度函数来发布帖子请求:

$scope.createCohort= function (){
    var arr=["condition 1","condition 2"];
    var cohort=new Cohort();
    cohort.name=$scope.CohortName;
    cohort.id=$scope.CohortId;
    for(var i=0;i<length_of_arr;i++)
    {      
       cohort.conditions[i].name=arr[i]  // This line gives me error.
    }

    Cohort.save(cohort,function(){     
    });
};

错误是

  

无法阅读财产&#39; 0&#39;未定义的

我如何向其发送帖子请求?

1 个答案:

答案 0 :(得分:1)

由于你不精确地声明var arr = [..]。我认为你已经在一个函数内声明了它,而不是在你的控制器中声明它使它无法访问createCohort函数。

在控制器中声明var arr = [](不在其中定义的函数中)并删除设置值的位置上的 var (因此不要屏蔽它) 。或者使用$ scope.arr = [...];

请注意,如果您从未在视图模板中使用arr,最好不要将其存储在$ scope中,因为angular watch会对$ scope中的所有字段进行彻底更改。

编辑:

这是问题:在for循环之前添加:

cohort.conditions = [];

并在for循环中执行:

cohort.conditions.push({name:arr[i]});