
[英]angularJS - ng-repeat: Error: Duplicates in a repeater are not allowed. Repeater:
[英]Copy an element of array and push it causes “Duplicates in a repeater are not allowed.” error - Angular
我有一个复制按钮,它具有:
$scope.copyHeadline = function (headline) {
var headlineCopy = headline;
var current_time = Date.now();
headlineCopy.label = headline.label + ' (Copy ' + current_time + ')';
$scope.headlineList.push(headlineCopy);
}
但出现“不允许在转发器中重复”错误。 我注意到我拥有的数组或列表中的每个元素都具有某种隐藏属性,例如:
$$hashKey: "object:135"
我很确定这是重复的内容,但我无法更改?
我读到可以使用:
track by $index
但是最终发生的是,当我按下“复制”按钮时,它也同时编辑了我正在复制的原始元素,因此无法使用。
我也在考虑只创建一个全新的元素,然后编写一个将每个元素复制到一个新元素中的函数。.但是,仅这个类就有几个具有很多属性的子类。 所以我想我只是想看看在采用该方法之前是否有更简单的方法。 谢谢!
之所以发生这种情况,是因为仅将原始对象的引用分配给其他变量不会复制它。 它只是将引用复制到同一对象。
采用:
var headlineCopy = angular.copy(headline);
这将复制对象的深层副本。
您的问题源于您没有复制 headline
对象,而只是引用它的事实。
在不了解标题对象的情况下很难知道完整的解决方案,但是您可以尝试执行以下操作:
$scope.copyHeadline = function (headline) {
var headlineCopy = {};
var current_time = Date.now();
headlineCopy.label = headline.label + ' (Copy ' + current_time + ')';
$scope.headlineList.push(headlineCopy);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.