我需要为用户预设NxN矩阵输入。因此,我在表对象上使用嵌套的ng-repeat来创建输入。虽然它最初成功填充,但它不会更新对象。
HTML
<div ng-app="myApp" ng-controller="VibrationCtrl">
<table>
<tr ng-repeat="Row in Mi">
<td ng-repeat="I in Row track by $index">
<input type="text" ng-model="I">
</td>
</tr>
</table>
{{Mi}}
</div>
JS
var myApp = angular.module('myApp', []);
function VibrationCtrl($scope) {
$scope.Mi = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
}
myApp.controller('VibrationCtrl', VibrationCtrl);
的jsfiddle:
答案 0 :(得分:2)
ng-model
需要引用对象(数组)的实际部分,而不仅仅是值。
ng-model="Row[$index]"
https://jsfiddle.net/wLhucx8b/4/
否则它不会更新实际对象的引用。想象一下,你循环遍历一个数组而你只是修改了值,而不是数组中的引用:
collection.forEach(function (value, index) {
value = '123'; // this won't actually change the original array
collection[index] = '123' // this WILL
});
^ ng-repeat
其中一个值的ng-model
行为相同。
注意:使用<input type="number" ... />
,否则您的ng-model
值将变为字符串!
答案 1 :(得分:0)
更改
<input type="text" ng-model="I">
到
<input type="text" ng-model="Row[$index]">