Je définis un filtre personnalisé comme ceci:
<div class="idea item" ng-repeat="item in items" isoatom>
<div class="section comment clearfix" ng-repeat="comment in item.comments | range:1:2">
....
</div>
</div>
Comme vous pouvez le voir, le ng-repeat où le filtre est utilisé est imbriqué dans un autre ng-repeat
Le filtre est défini comme ceci:
myapp.filter('range', function() {
return function(input, min, max) {
min = parseInt(min); //Make string input int
max = parseInt(max);
for (var i=min; i<max; i++)
input.push(i);
return input;
};
});
Je suis en train:
Erreur: les doublons dans un répéteur ne sont pas autorisés. Répéteur: commentaire dans item.comments | plage: 1: 2 ngRepeatAction @ https://ajax.googleapis.com/ajax/libs/angularjs/1.1.4/an
<div ng-repeat="row in [1,1,1,2,2] |filter: 2 track by $index" >
le "filtre de recherche" doit être avant "suivre par $ index"$index
variable existe- t-elle quelque part?track by ($index + ':' + row)
pour mettre à jour chaque individu<ng-repeat>
chaque fois que ses données sont mises à jour, ainsi que lorsqu'un nouvel élément est ajouté, sans trébucher sur les dupesPour ceux qui attendent JSON et obtiennent toujours la même erreur, assurez-vous d'analyser vos données:
la source
J'avais un problème dans mon projet où j'utilisais ng-repeat track par $ index mais les produits ne reflétaient pas lorsque les données provenaient de la base de données. Mon code est comme ci-dessous:
Dans le code ci-dessus, le produit est une directive distincte pour afficher le produit, mais j'ai appris que $ index provoque un problème lorsque nous transmettons des données de la portée. Les pertes de données et DOM ne peuvent donc pas être mis à jour.
J'ai trouvé la solution en utilisant product.id comme clé dans ng-repeat comme ci-dessous:
Mais le code ci-dessus échoue à nouveau et génère l'erreur ci-dessous lorsque plusieurs produits sont livrés avec le même identifiant:
angular.js: 11706 Erreur: [ngRepeat: dupes] Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression «track by» pour spécifier des clés uniques. Répétiteur
J'ai finalement résolu le problème en créant une clé unique dynamique de ng-repeat comme ci-dessous:
Cela a résolu mon problème et j'espère que cela vous aidera à l'avenir.
la source
track by $index
serait sûrement mieux quetrack by (product.id + $index)
? D'une part,track by $index
c'est plus simple, et d'autre part, vous n'avez probablement aucune garantie que les valeurs de(product.id + $index)
seront uniques. Par exemple, si votre tableau commence par un produit avecid
5 et ensuite il y a un produit avecid
4, leurs valeurs de(product.id + $index)
seront toutes deux 5 (5 + 0 pour le premier produit, 4 + 1 pour le second) et vous obtenir toujours les doublons dans un répéteur ne sont pas autorisés à l' erreur.Que comptez-vous faire avec votre filtre "gamme"?
Voici un échantillon de travail de ce que je pense que vous essayez de faire: http://jsfiddle.net/evictor/hz4Ep/
HTML:
JS:
la source
Si, par hasard, cette erreur se produit lorsque vous travaillez avec SharePoint 2010: renommez vos extensions de fichier .json et assurez-vous de mettre à jour votre chemin restService. Aucun "suivi par $ index" supplémentaire n'était requis.
Heureusement, on m'a transmis ce lien vers cette justification:
Une fois que les extensions de fichier sont modifiées, elles devraient être toutes définies.
la source
Juste au cas où cela arriverait à quelqu'un d'autre, je documente cela ici, j'obtenais cette erreur parce que j'ai par erreur défini le modèle ng de la même manière que le tableau ng-repeat:
Au lieu de:
J'ai vérifié le tableau et je n'ai pas eu de doublons, vérifiez simplement vos variables.
la source
Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression «track by» pour spécifier des clés uniques.
Exemple
la source
Si vous appelez une répétition ng dans une balise <ul>, vous pourrez peut-être autoriser les doublons. Voir ce lien pour référence. Voir Todo2.html
la source
Ma
JSON
réponse était comme ceci:J'ai donc l'habitude
ng-repeat = "item in variables.items"
de l'afficher.la source
Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression «track by» pour spécifier des clés uniques. Répéteur: sdetail dans mydt, Clé en double: chaîne:, Valeur en double:
Cette erreur peut donc également se produire lorsque vous récupérez les données de la base de données, dont le nom est incorrect écrit par vous.
la source