Angularjs 嵌套ngRepeat中的角度JS匹配模型 普朗克
可以通过单击加号添加行 如您所见,每个跨距都将使用放入其中一个字段的任何值填充任何行 当我清楚地提到某一行时,这怎么可能呢Angularjs 嵌套ngRepeat中的角度JS匹配模型 普朗克,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,可以通过单击加号添加行 如您所见,每个跨距都将使用放入其中一个字段的任何值填充任何行 当我清楚地提到某一行时,这怎么可能呢 <input class="rt-input" type="text" ng-model="realm.rows[row][heading].content"> 发生这种情况的原因是,每一个新行都是这样创建的: var protoRow = $scope.realm.rows[0]; ... $sc
<input class="rt-input" type="text" ng-model="realm.rows[row][heading].content">
发生这种情况的原因是,每一个新行都是这样创建的:
var protoRow = $scope.realm.rows[0];
...
$scope.realm.rows[rowCount] = protoRow;
由于$scope.realm.rows[0]
(因此protoRow
)是一个对象,因此它是通过引用传递的。因此,每个新表行都绑定到realm.rows
中的同一个对象
您应该创建对象的新副本,而
angular.copy()
正是该作业的工具:
var protoRow = $scope.realm.rows[0];
...
$scope.realm.rows[rowCount] = angular.copy(protoRow);
另请参见,我已经修改了您的plnkr使其工作 问题是您的所有行都引用了同一个对象 所以我只是用
angular.copy()
及
您的plunker正在生成此错误消息:
TypeError:无法设置未定义的属性“content”
,并且ng model
与您在问题中发布的内容不匹配。你链接到错误的Plunk了吗?
var protoRow = angular.copy($scope.realm.rows[0]);
$scope.realm.rows[rowCount] = angular.copy(protoRow);