“Doublons dans un répéteur ne sont pas autorisés” sur ng-repeat

J'ai de la suite de données json renvoyé d'un service à la demande:

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

Et je suis en train d'essayer le code suivant dans le code html de la boucle grâce à ces données:

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

J'obtiens l'erreur suivante lorsque j'exécute le code:

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

Voici le code de mon contrôleur:

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

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

Quelqu'un pourrait m'aider à comprendre pourquoi j'obtiens cette erreur?

  • Ne devriez-vous pas faire $scope.entries = data.entries; dans votre contrôleur ?
  • Votre message d'erreur ne semble pas appartenir à cet extrait de code que vous avez fournis. Il mentionne make in makes lorsque votre exemple dit entry in entries. Avez-vous une liste de chaînes de caractères appelée makes portée? Si oui, c'est la chose qui a besoin de l' track by ajouté.
  • double possible de Angulaire ng-repeat Erreur "Doublons dans un répéteur ne sont pas autorisés."
  • J'ai essayé de simplifier les choses à l'aide de l'entrée pour make et entries pour makes, à tort oublié de modifier le message d'erreur. Désolé.
  • Loggin de données.des entrées est de me donner undefined dans le résultat.
  • J'ai essayé d'utiliser entry in entries tracy by $index comme <option ng-repeat="entry in entries track by $index" value="{{$index}}">{{$index}}</option> et il fonctionne très bien, mais j'ai l'index imprimé pour la option élément et son value, comme 1,2,3.... Je ne pense pas qu'il y aurait une double entrée dans le retourné de données JSON. Pensez-vous que les données retournées pourraient être utilisées de la façon dont je l'utilise. Est son format correct pour être utilisé pour faire une boucle dans un tableau?
  • Comment imprimer la name des entrées dans la option élément et sa valeur?
  • Avez-vous essayez seulement l'ajout de track by $index et de ne pas modifier vos autres expressions de $index? e.g <option ng-repeat="entry in entries track by $index" value="{{entry.name}}">{{$entry.name}}</option>

InformationsquelleAutor skip | 2014-07-27