【发布时间】:2014-07-27 01:32:26
【问题描述】:
我从服务请求中返回了以下 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;
});
}]);
有人可以帮我理解为什么会出现这个错误吗?
【问题讨论】:
-
你不应该在你的控制器中做
$scope.entries = data.entries;吗? -
您的错误消息似乎不属于您提供的代码的 sn-p。当您的示例显示
entry in entries时,它会提到make in makes。范围内是否有一个名为makes的字符串列表?如果是这样,that 就是需要添加track by的东西。 -
@MartinAtkins:我尝试使用
make和entries的条目来简化事情makes,错误地忘记了修改错误消息。对不起。 -
您是否尝试仅添加
track by $index而不将其他表达式更改为$index?例如<option ng-repeat="entry in entries track by $index" value="{{entry.name}}">{{$entry.name}}</option>
标签: javascript json angularjs for-loop angularjs-ng-repeat