Error angular ng-repeat “No se permiten duplicados en un repetidor”.

Estoy definiendo un filtro personalizado como ese:

....

Como puede ver, la repetición ng donde se usa el filtro está anidada dentro de otra repetición ng

El filtro se define así:

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

Me estoy poniendo:

Error: duplicados en un repetidor no están permitidos. Repetidor: comentario en item.comments | rango: 1: 2 ngRepeatAction @ https://ajax.googleapis.com/ajax/libs/angularjs/1.1.4/an

La solución se describe de hecho aquí: http://www.anujgakhar.com/2013/06/15/duplicates-in-a-repeater-are-not-allowed-in-angularjs/

AngularJS no permite duplicados en una directiva ng-repeat. Esto significa que si intenta hacer lo siguiente, obtendrá un error.

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

Sin embargo, cambiar ligeramente el código anterior para definir un índice para determinar la singularidad de la siguiente manera lo hará funcionar nuevamente.

 // This will work 

Los documentos oficiales están aquí: https://docs.angularjs.org/error/ngRepeat/dupes

Para aquellos que esperan JSON y aún obtienen el mismo error, asegúrese de analizar sus datos:

 $scope.customers = JSON.parse(data) 

Estaba teniendo un problema en mi proyecto en el que estaba usando ng-repeat track por $ index, pero los productos no se reflejaban cuando los datos provienen de la base de datos. Mi código es el siguiente:

 

En el código anterior, el producto es una directiva separada para mostrar el producto. Pero llegué a saber que $ index causa problemas cuando pasamos los datos del scope. Entonces las pérdidas de datos y DOM no se pueden actualizar.

Encontré la solución usando product.id como una clave en ng-repeat como a continuación:

 

Pero el código anterior falla nuevamente y arroja el siguiente error cuando más de un producto viene con la misma identificación:

angular.js: 11706 Error: [ngRepeat: dupes] No se permiten duplicados en un repetidor. Use la expresión ‘track by’ para especificar claves únicas. Reloj de repetición

Así que finalmente resolví el problema haciendo una clave única dinámica de ng-repeat como la siguiente:

 

Esto resolvió mi problema y espero que esto te ayude en el futuro.

¿Qué pretende que haga su filtro de “rango”?

Aquí hay una muestra de trabajo de lo que creo que estás tratando de hacer: 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' ] } ]; } 

Si por casualidad se produce este error al trabajar con SharePoint 2010: cambie el nombre de las extensiones de archivo .json y asegúrese de actualizar su ruta de servicio de rest. No se requiere una “pista por índice de $” adicional.

Afortunadamente, me enviaron este enlace a este razonamiento:

.json se convierte en un tipo de archivo importante en SP2010. SP2010 incluye ciertos puntos finales del servicio web. La ubicación de estos archivos es la carpeta 14hive \ isapi. La extensión de estos archivos es .json. Esa es la razón por la cual da ese error.

“solo le importa que el contenido de un archivo json sea json, no su extensión de archivo”

Una vez que se cambian las extensiones de archivo, debe estar todo configurado.

En caso de que esto le pase a otra persona, estoy documentando esto aquí, estaba obteniendo este error porque erróneamente configuré el ng-model como la matriz ng-repeat:

   

En lugar de:

  

Revisé la matriz y no tenía ningún duplicado, solo revise sus variables.

Los duplicados en un repetidor no están permitidos. Use la expresión ‘track by’ para especificar claves únicas.

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

Ejemplo

 < !DOCTYPE html>        
First Name Last Name
{{person.firstName}} {{person.lastName}}

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

prueba esto

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

Si llama a una repetición ng dentro de una etiqueta

    , puede permitir duplicados. Vea este enlace para referencia. Ver Todo2.html

Mi respuesta JSON fue así:

 {"items":  [   { "index": 1, "name": "Samantha", "rarity": "Scarborough", "email": "maureen@sykes.mk" },   { "index": 2, "name": "Amanda", "rarity": "Vick", "email": "jessica@livingston.mv" }] } 

Entonces, usé ng-repeat = "item in variables.items" para mostrarlo.

Los duplicados en un repetidor no están permitidos. Use la expresión ‘track by’ para especificar claves únicas. Repeater: sdetail en mydt, clave duplicada: cadena:, valor duplicado:

Me enfrenté a este error porque había escrito el nombre incorrecto de la base de datos en mi parte php api ……

Por lo tanto, este error también puede ocurrir cuando está obteniendo los datos de la base de datos, cuyo nombre es incorrecto.