Angular ng-repeat Error “I duplicati in un ripetitore non sono consentiti.”

Sto definendo un filtro personalizzato in questo modo:

....

Come puoi vedere la ng-repeat in cui viene utilizzato il filtro è nidificata in un’altra ripetizione di ng

Il filtro è definito in questo modo:

 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; }; }); 

Sto ricevendo:

Errore: i duplicati in un ripetitore non sono consentiti. Ripetitore: commentare in item.comments | intervallo: 1: 2 ngRepeatAction @ https://ajax.googleapis.com/ajax/libs/angularjs/1.1.4/an

La soluzione è in realtà descritta qui: http://www.anujgakhar.com/2013/06/15/duplicates-in-a-repeater-are-not-allowed-in-angularjs/

AngularJS non consente duplicati in una direttiva ng-repeat. Questo significa che se stai cercando di fare quanto segue, riceverai un errore.

 // This code throws the error "Duplicates in a repeater are not allowed. // Repeater: row in [1,1,1] key: number:1" 

Tuttavia, cambiando leggermente il codice di cui sopra per definire un indice per determinare l’univocità come di seguito, funzionerà di nuovo.

 // This will work 

I documenti ufficiali sono qui: https://docs.angularjs.org/error/ngRepeat/dupes

Per coloro che si aspettano JSON e continuano a ricevere lo stesso errore, assicurati di analizzare i tuoi dati:

 $scope.customers = JSON.parse(data) 

Stavo avendo un problema nel mio progetto in cui stavo usando la traccia ng-repeat di $ index ma i prodotti non si stavano riflettendo quando i dati provengono dal database. Il mio codice è il seguente:

 

Nel codice precedente, il prodotto è una direttiva separata per visualizzare il prodotto. Ma ho scoperto che l’indice $ causa problemi quando passiamo i dati dall’ambito. Quindi le perdite di dati e DOM non possono essere aggiornati.

Ho trovato la soluzione usando product.id come chiave in ng-repeat come di seguito:

 

Ma il codice sopra riportato fallisce e genera l’errore sottostante quando più di un prodotto viene fornito con lo stesso id:

angular.js: 11706 Errore: [ngRepeat: dupes] I duplicati in un ripetitore non sono consentiti. Utilizza l’espressione ‘track by’ per specificare chiavi univoche. Ripetitore

Quindi alla fine ho risolto il problema rendendo dynamic la chiave unica di ng-repeat come di seguito:

 

Questo ha risolto il mio problema e spero che questo ti possa aiutare in futuro.

Cosa intendi per filtro “intervallo”?

Ecco un esempio funzionante di ciò che penso tu stia cercando di fare: http://jsfiddle.net/evictor/hz4Ep/

HTML:

 
Item {{$index}}
Comment {{$index}} {{comment}}

JS:

 angular.module('manyminds', [], function() {}).filter('range', function() { return function(input, min, max) { var range = []; min = parseInt(min); //Make string input int max = parseInt(max); for (var i=min; i<=max; i++) input[i] && range.push(input[i]); return range; }; }); function MainCtrl($scope) { $scope.items = [ { comments: [ 'comment 0 in item 0', 'comment 1 in item 0' ] }, { comments: [ 'comment 0 in item 1', 'comment 1 in item 1', 'comment 2 in item 1', 'comment 3 in item 1' ] } ]; } 

Se per caso questo errore si verifica quando si lavora con SharePoint 2010: Rinominare le estensioni di file .json e assicurarsi di aggiornare il percorso restService. Non era necessaria alcuna “traccia di $ indice” aggiuntiva.

Fortunatamente ho inoltrato questo link a questa logica:

.json diventa un tipo di file importante in SP2010. SP2010 include alcuni endpoint del servizio Web. La posizione di questi file è la cartella 14hive \ isapi. L’estensione di questi file è .json. Questa è la ragione per cui dà un tale errore.

“si preoccupa solo che il contenuto di un file JSON è json – non la sua estensione di file”

Una volta modificate le estensioni dei file, dovrebbe essere tutto pronto.

Nel caso questo succeda a qualcun altro, sto documentando questo qui, stavo ricevendo questo errore perché ho erroneamente impostato il modello-ng come l’array ng-repeat:

   

Invece di:

  

Ho controllato l’array e non ho duplicato, basta controllare le variabili.

I duplicati in un ripetitore non sono ammessi. Utilizza l’espressione ‘track by’ per specificare chiavi univoche.

 Repeater: {0}, Duplicate key: {1}, Duplicate value: {2} 

Esempio

         
First Name Last Name
{{person.firstName}} {{person.lastName}}

{{person1.firstName}} {{person1.lastName}}
{{sayHello()}}

prova questo

 $http({ method: 'GET', url: url, // your remote url responseType: "json" }). then(function successCallback(response) { //your code when success }, function errorCallback(response) { //your code when fails }); 

Se chiami una ng-repeat all’interno di un tag

    , potresti essere in grado di consentire duplicati. Vedi questo link per riferimento. Vedi Todo2.html

La mia risposta JSON era così:

 {"items":  [   { "index": 1, "name": "Samantha", "rarity": "Scarborough", "email": "[email protected]" },   { "index": 2, "name": "Amanda", "rarity": "Vick", "email": "[email protected]" }] } 

Quindi, ho usato ng-repeat = "item in variables.items" per visualizzarlo.

I duplicati in un ripetitore non sono ammessi. Utilizza l’espressione ‘track by’ per specificare chiavi univoche. Repeater: sdetail in mydt, Duplicate key: string:, Valore duplicato:

Ho affrontato questo errore perché avevo scritto il nome del database sbagliato nella mia parte php api ……

Quindi questo errore si può anche verificare quando stai recuperando i dati dalla base del database, il cui nome è stato scritto erroneamente da te.