复制要添加到同一数组的最后一个数组对象

时间:2015-04-23 10:04:14

标签: javascript arrays angularjs

我希望这很简单。我正在尝试再次将数组中的最后一个对象添加到数组中。

像这样:

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”:[]}

1 个答案:

答案 0 :(得分:2)

你有一个角度误差。在ng-repeat中使用track by

<div ng-repeat="n in template.ressource.level track by $index">

参考

  

默认情况下,ngRepeat不允许在数组中使用重复项。这是因为当存在重复项时,不可能在集合项和DOM元素之间保持一对一的映射。

     

如果您确实需要重复重复项目,则可以使用跟踪表达式替换默认跟踪行为。