ng-repeat 上的“中继器中不允许重复”

2024-04-04

我收到了从服务请求返回的以下 json 数据:

{
    "entries": [{
        "id": 2081,
        "name": "BM",
        "niceName": "bodmas"
        }]
    }, {
        "id": 8029,
        "name": "Mas",
        "niceName": "Masm"
        }]
    }],
    "count": 2
}

我正在尝试在 html 中使用以下代码来循环访问这些数据:

<option ng-repeat="entry in entries" value="{{entry.name}}">{{entry.name}}</option>

当我运行代码时出现以下错误:

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: entry in entries, Duplicate key: string:c

以下是我的控制器的代码:

myApp.controller("MyController", ['$scope', '$http', '$log', function($scope, $http, $log){
       ...

       $http.get('https://myServiceURL').success(function(data){
                    $scope.entries = data;
        });
}]);

有人可以帮助我理解为什么我会收到该错误吗?


Add track by $index对你的 ng 重复,而不是:

<option ng-repeat="entry in entries" value="{{entry.name}}">{{entry.name}}</option>

Try:

<option ng-repeat="entry in entries track by $index" value="{{entry.name}}">{{entry.name}}</option>

有关于此的更多信息此错误消息的文档 https://docs.angularjs.org/error/ngRepeat/dupes:

如果 ngRepeat 表达式中存在重复键,则会发生此情况。 禁止重复的键,因为 AngularJS 使用键来关联 DOM 带有项目的节点。

默认情况下,集合通过引用进行键控,这对于 最常见的模型,但对于原始类型可能会出现问题 实习生(分享参考文献)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ng-repeat 上的“中继器中不允许重复” 的相关文章

随机推荐