Quiero usar el índice de la lista principal (foos) como argumento para una llamada de función en la lista secundaria (foos.bars).
Encontré una publicación en la que alguien recomienda usar $ parent. $ Index, pero $index
no es propiedad de $parent
.
¿Cómo puedo acceder al índice del padre ng-repeat
?
<div ng-repeat="f in foos">
<div>
<div ng-repeat="b in foos.bars">
<a ng-click="addSomething($parent.$index)">Add Something</a>
</div>
</div>
</div>
javascript
angularjs
angularjs-ng-repeat
Codificador1
fuente
fuente
Respuestas:
Mi código de ejemplo era correcto y el problema era algo más en mi código real. Aún así, sé que fue difícil encontrar ejemplos de esto, así que lo estoy respondiendo en caso de que alguien más esté mirando.
fuente
ng-if
en el código como acabo de descubrir.ng-if
requiere una$parent
referencia adicional . Me ahorró un poco de dolor de cabeza.De acuerdo con ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat , puede almacenar la clave o el índice de matriz en la variable que elija.
(indexVar, valueVar) in values
para que puedas escribir
Un nivel superior todavía está bastante limpio con $ parent. $ Index pero varios padres suben, las cosas pueden complicarse.
Nota:
$index
continuará definiéndose en cada ámbito, no se reemplaza porfIndex
.fuente
$parent.$index
uno(fIndex, f)
método, $ index todavía se definirá (no se omitirá), por lo que el índice se vuelve accesible como ambos$index
yfIndex
.$index
no funciona, pero agregar elfIndex
sí. No tengo ni idea de por qué$index
no funciona (funciona en otros lugares de mi código), pero después de luchar durante varios días, dejé de preocuparme cuando encontré esta respuesta. También es un poco más legible cuando tienes múltiplesng-repeat
IMO.ng-repeat
iteración crea su propio alcance, que también define el suyo$index
, sobrescribiendo el del padre$index
. Si incluye un{{$index}}
derecho encima o debajo delng-repeat
elemento más interno , verá el valor del padre, y al colocarlo dentro delng-repeat
elemento más interno le mostrará el del niño. El uso del enfoque en esta respuesta solo asigna el índice principal a una variable cuyo nombre ha elegido (fIndex
) para que no se sobrescriba con un ámbito secundario.Echa un vistazo a mi respuesta a una pregunta similar .
Aliasing
$index
no tenemos que escribir cosas locas como$parent.$parent.$index
.Solución mucho más elegante que
$parent.$index
está usando ng-init :Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
fuente
También puede obtener el control del índice de padre principal mediante el siguiente código
fuente
Simplemente puede usar use $ parent. $ Index. Donde parent representará el objeto del objeto repetido padre.
fuente
$ parent no funciona si hay varios padres. en lugar de eso, podemos definir una variable de índice padre en init y usarla
fuente