我从一个服务请求中返回了以下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;
});
}]);
有人能帮我理解为什么我会得到这个错误吗?
发布于 2014-07-27 09:47:47
您的JSON无效,应为:
{
"entries": [{
"id": 2081,
"name": "BM",
"niceName": "bodmas"
}, {
"id": 8029,
"name": "Mas",
"niceName": "Masm"
}],
"count": 2
}
此外,请确保您以正确的级别访问文档,请使用:
$http.get('https://myServiceURL').success(function(data){
$scope.entries = data.entries;
});
那么,它应该是可行的。请参阅此JSBin。
发布于 2014-07-27 10:06:25
看起来您的作用域中的数据结构有问题。您的示例JSON显示了一个具有entries
属性和count
属性的对象。然后将整个对象作为entries
放入您的作用域中。这意味着您需要以entries.entries
的形式访问这些条目,并以entries.count
为单位进行计数。也许这个控制器更接近你想要的:
myApp.controller("MyController", ['$scope', '$http', '$log', function($scope, $http, $log){
...
$http.get('https://myServiceURL').success(function(data){
$scope.entries = data.entries;
$scope.count = data.count;
});
}]);
发布于 2016-06-10 13:16:03
不允许在ng重复中出现重复项。示例
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script src="angular.js"></script>
</head>
<body>
<div ng-app="myApp" ng-controller="personController">
<table>
<tr> <th>First Name</th> <th>Last Name</th> </tr>
<tr ng-repeat="person in people track by $index">
<td>{{person.firstName}}</td>
<td>{{person.lastName}}</td>
<td><input type="button" value="Select" ng-click="showDetails($index)" /></td>
</tr>
</table> <hr />
<table>
<tr ng-repeat="person1 in items track by $index">
<td>{{person1.firstName}}</td>
<td>{{person1.lastName}}</td>
</tr>
</table>
<span> {{sayHello()}}</span>
</div>
<script> var myApp = angular.module("myApp", []);
myApp.controller("personController", ['$scope', function ($scope)
{
$scope.people = [{ firstName: "F1", lastName: "L1" },
{ firstName: "F2", lastName: "L2" },
{ firstName: "F3", lastName: "L3" },
{ firstName: "F4", lastName: "L4" },
{ firstName: "F5", lastName: "L5" }]
$scope.items = [];
$scope.selectedPerson = $scope.people[0];
$scope.showDetails = function (ind)
{
$scope.selectedPerson = $scope.people[ind];
$scope.items.push($scope.selectedPerson);
}
$scope.sayHello = function ()
{
return $scope.items.firstName;
}
}]) </script>
</body>
</html>
https://stackoverflow.com/questions/24977103
复制相似问题