我希望这很简单。我正在尝试再次将数组中的最后一个对象添加到数组中。
像这样:
arr = [1, 2]
result = [1, 2, 2]
只需使用此代码:
$scope.template = {
ressource: {
level: [{
gain: [],
cost: []
}]
}
};
$scope.addLevel = function() {
var last = $scope.template.ressource.level[$scope.template.ressource.level.length - 1];
$scope.template.ressource.level.push(last);
};
但是我收到了这个错误:
错误:[ngRepeat:dupes]不允许在转发器中重复。使用'track by'表达式指定唯一键。 Repeater:template.ressource.level中的level,Duplicate key:object:51,Duplicate value:{“gain”:[],“cost”:[]}
修改
所以我尝试了track by
,但我似乎没有得到任何新内容,所以这里是代码的HTML
部分,我使用gain
和{{ 1}}值:
cost
错误现在说明:
错误:[ngRepeat:dupes]不允许在转发器中重复。使用'track by'表达式指定唯一键。 Repeater:template.ressource.level的级别跟踪$ id(级别),重复键:object:51,重复值:{“gain”:[],“cost”:[]}
答案 0 :(得分:2)
你有一个角度误差。在ng-repeat中使用track by
。
<div ng-repeat="n in template.ressource.level track by $index">
参考的
默认情况下,ngRepeat不允许在数组中使用重复项。这是因为当存在重复项时,不可能在集合项和DOM元素之间保持一对一的映射。
如果您确实需要重复重复项目,则可以使用跟踪表达式替换默认跟踪行为。