所以我已经制作了这个非常简单的脚本来隔离问题。我测试了不同版本的角度和小提琴,如果你选择版本1.1.1它工作正常。您可以根据需要多次点击添加按钮。较新的版本似乎有这种方法的问题。这是一个错误,一个安全措施还是我应该写一个指令?在这个fiddle我正在加载最新版本,但您可以删除此版本并将其更改为1.1.1,它将起作用。此外,1.2.1也有同样的问题。提前感谢任何提示。
HTML
<div ng-app="app">
<div ng-controller="ctrl">
<div ng-repeat="item in naam">
<div>{{item}}</div>
</div>
<button ng-click="add()">add</button>
</div>
</div>
JS
var app = angular.module("app", []);
app.controller("ctrl", function ($scope) {
$scope.naam = [
"1",
"2"];
$scope.add = function () {
var x = 3;
var y = 4;
$scope.naam.push(x, y);
}
});
答案 0 :(得分:5)
不,这不是Angular的错误。实际上,您收到错误Error: [ngRepeat:dupes]
,因为它试图将相同的密钥添加到数组中而ng-repeat
不允许它。
因此,您必须使用track by
,如下所示:
<div ng-repeat="item in naam track by $index">
<div>{{item}}</div>
</div>
这是一个更新的JSFiddle。