Ниже мой плукер, в котором я пытаюсь отобразить типы вывода на основе разных месяцев. Я хочу сохранить максимальную емкость для каждого месяца при нажатии кнопки сохранения, получив все значения в массиве. Но когда я печатаю в текстовом поле значение повторяется, поскольку индекс повторяется в столбце.
Ниже приведен код:
JavaScript:
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.outputType=["Coal","ROM","WASTE"];
$scope.months=["JAN","FEB","MARCH","APRIL"];
$scope.values = [];
$scope.save=function(){
alert($scope.values)
}
});
HTML:
<table style="border:1px solid red;">
<thead>
<tr>
<th> </th>
<th ng-repeat="i in months"><b>{{i}}</b></th>
</tr>
</thead>
<tbody ng-repeat="item in outputType">
<tr>
<td>{{item}} </td>
<td ng-repeat="i in months">
<input type="text" ng-model="values[$index]"
placeholder="Max.Capacity">
</td>
</tr>
</tbody>
</table>
Проверьте, что http://plnkr.co/edit/4DUDIBoTOCI4J89FiQeM?p=preview
JS
$scope.values = {};
HTML
<input type="text" ng-model="values[item][i]" placeholder="Max.Capacity">
или
<input type="text" ng-model="values[i][item]" placeholder="Max.Capacity">
Решение, если вы хотите оставить массив.
Вам нужно изменить свой ngModel на вход
<input type="text" ng-model="values[$index]" placeholder="Max.Capacity">
в
ng-model="values[$parent.$index][$index]"
.
Вот пример: