Angularjs - 嵌套ng中的匹配模型重复

时间:2014-04-07 14:52:22

标签: angularjs angularjs-ng-repeat

Plunkr

http://embed.plnkr.co/10dTMNIFCoqZW8jMez4R/preview

您可以点击加号添加一行。

如您所见,每个范围将填充任何行,其中包含放入其中一个字段的任何值。

当我明确提到某一特定行时,怎么可能呢?

 <input class="rt-input" type="text" ng-model="realm.rows[row][heading].content">

2 个答案:

答案 0 :(得分:1)

发生这种情况的原因是每个新行都是这样创建的:

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);

另请参阅此 modified, working demo

答案 1 :(得分:1)

我修改了你的plnkr以使它工作。 http://plnkr.co/edit/D98tLpXEZgV63GjUTJbD?p=preview

问题是你的所有行都指的是同一个对象。

所以我只是复制你的&#34;原型行&#34;与angular.copy()

var protoRow = angular.copy($scope.realm.rows[0]);

$scope.realm.rows[rowCount] = angular.copy(protoRow);