Reputation: 3254
I am generating json data for multiple elements with angular. I am getting output as
{"field":{"name":{"0":"a","1":"b"},"length":{"0":10,"1":20}}}
I want jsondata to be sophisticated (in array form) such as:
{"field":[{"name":"a", "length":10},{"name":"b", "length":20}]}
How can I achieve this ?
<!DOCTYPE html>
<html>
<head>
<script src="https://rawgit.com/angular/bower-angular/master/angular.min.js"></script>
<meta charset=utf-8 />
</head>
<body>
<div ng-app="mainApp" ng-controller="JsonController as ctrl">
<div ng-repeat="a in [1,2] track by $index">
<input type="text" ng-model="task.field['name'][$index]">
<input type="number" ng-model="task.field['length'][$index]">
</div>
<pre>
{{task}}
</pre>
</div>
<script>
(function() {
angular.module("mainApp", []).controller("JsonController", function($scope) {
$scope.task = {};
});
}());
</script>
</body>
</html>
Upvotes: 0
Views: 97
Reputation: 691835
<div ng-repeat="a in [1,2] track by $index">
<input type="text" ng-model="task.field[$index].name">
<input type="number" ng-model="task.field[$index].length">
</div>
$scope.task = {
field: []
};
Although I don't like this approach at all. Why don't you create your objects upfront in the controller, and just iterate over them:
<div ng-repeat="t in task.field">
<input type="text" ng-model="t.name">
<input type="number" ng-model="t.length">
</div>
$scope.task = {
field: [{}, {}]
};
Upvotes: 1