我需要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"
}
]
}
我做错了什么?我需要行为是一个数组而不是一个对象。
由于
答案 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};
};