Estoy definiendo un filtro personalizado así:
<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>
Como puede ver, el ng-repeat donde se usa el filtro está anidado dentro de otro ng-repeat
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: no se permiten duplicados en un repetidor. Repetidor: comentar en item.comments | rango: 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" >
el "filtro de búsqueda" debe estar antes de "rastrear por $ index"$index
Existe alguna variable en algún lugar?track by ($index + ':' + row)
para actualizar los mensajes individuales<ng-repeat>
cada vez que se actualizan sus datos, así como cuando se agrega un nuevo elemento, sin tropezar conPara aquellos que esperan JSON y siguen obteniendo el mismo error, asegúrese de analizar sus datos:
fuente
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 alcance. Por lo tanto, las pérdidas de datos y DOM no se pueden actualizar.
Encontré la solución usando product.id como clave en ng-repeat como a continuación:
Pero el código anterior vuelve a fallar 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 'seguimiento por' para especificar claves únicas. Reloj de repetición
Así que finalmente resolví el problema haciendo una clave dinámica única de ng-repeat como a continuación:
Esto resolvió mi problema y espero que esto te ayude en el futuro.
fuente
track by $index
sería mejor quetrack by (product.id + $index)
? Por un lado,track by $index
es más simple, y por otro, probablemente no tenga ninguna garantía de que los valores de(product.id + $index)
sean únicos. Por ejemplo, si su matriz comienza con un producto conid
5 y después de eso hay un producto conid
4, sus valores(product.id + $index)
serán 5 (5 + 0 para el primer producto, 4 + 1 para el segundo) y obtendrá Todavía obtener los duplicados en un repetidor no se permite error.¿Qué piensa que haga su filtro de "rango"?
Aquí hay una muestra funcional de lo que creo que estás tratando de hacer: http://jsfiddle.net/evictor/hz4Ep/
HTML:
JS:
fuente
Si por casualidad este error ocurre cuando trabaja con SharePoint 2010: cambie el nombre de sus extensiones de archivo .json y asegúrese de actualizar su ruta restService. No se requirió "seguimiento por $ índice" adicional.
Afortunadamente, me enviaron este enlace a esta justificación:
Una vez que se cambian las extensiones de archivo, debe estar todo configurado.
fuente
En caso de que esto le suceda a alguien más, estoy documentando esto aquí, recibí este error porque configuré por error el modelo ng igual que la matriz ng-repeat:
En vez de:
Verifiqué la matriz y no tenía duplicados, solo verifique sus variables.
fuente
No se permiten duplicados en un repetidor. Use la expresión 'seguimiento por' para especificar claves únicas.
Ejemplo
fuente
Si llama a ng-repeat dentro de una etiqueta <ul>, puede permitir duplicados. Vea este enlace para referencia. Ver Todo2.html
fuente
Mi
JSON
respuesta fue así:Entonces, solía
ng-repeat = "item in variables.items"
mostrarlo.fuente
No se permiten duplicados en un repetidor. Use la expresión 'seguimiento por' para especificar claves únicas. Repetidor: sdetail en mydt, Clave duplicada: cadena:, Valor duplicado:
Por lo tanto, este error también puede ocurrir cuando obtiene los datos de la base de datos, cuyo nombre escribe incorrectamente.
fuente