AngularJS - HTTP使用数组发布表单

时间:2016-09-12 14:36:38

标签: angularjs arrays forms post

我需要POST一个带有数组值的表单。

这是我的HTML代码:

<label>Name</label>
<input type="text" name="name" ng-model="vm.model.name">

<label>Behaviours</label>
<input type="text" name="behaviours[0].name" ng-model="vm.model.behaviours[0].name">
<input type="text" name="behaviours[1].name" ng-model="vm.model.behaviours[1].name">

这是我的控制器代码:

vm.model = {};

function submit() {
   MasterCompetence.save(vm.model)
            .success(...)
            .error(...)
}

请求正在这样发送,行为为对象:

{
   "name":"123",
   "behaviours": {
       "0": {
          "name":"Name 1","description":"Description 1"
       },
       "1": {
          "name":"Name 2","description":"Description 2"
       }
   }
}

但是,Server API并不期望名称&#34; 0&#34;和&#34; 1&#34;的行为。它期望:

{
   "name":"123",
   "behaviours": [
       {
          "name":"Name 1","description":"Description 1"
       },
       {
          "name":"Name 2","description":"Description 2"
       }
   ]
}

我做错了什么?我需要行为是一个数组而不是一个对象。

由于

1 个答案:

答案 0 :(得分:0)

您需要进行以下更改。

您的HTML应如下所示。

    <label>Name</label>
    <input type="text"  ng-model="vm.name">

    <label>Behaviours</label>
    <input type="text" ng-model="vm.behaviours[0]['name']" ng-change="createModel()">
    <input type="text" ng-model="vm.behaviours[1]['name']" ng-change="createModel()">
    <pre>{{model}}</pre>

你的Js会是这样的。

    $scope.vm ={};
    $scope.model = {};
    $scope.vm.behaviours =[];

    $scope.createModel = function() {
        $scope.model = {"name":$scope.vm.name,
        "behaviours":$scope.vm.behaviours};
    };