2016-09-12 9 views
0

POSTフォームに値の配列が必要です。AngularJS - HTTP配列を使ってフォームを投稿する

これは私の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は動作の名前 "0"と "1"を期待しません。期待するもの:

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

私は間違っていますか?私は動作がオブジェクトではなく配列である必要があります。

ありがとうございました

答えて

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}; 
    }; 
関連する問題