Indice d'accès du parent ng-repeat de l'enfant ng-repeat
Je veux utiliser l'index de la liste parent (ooa) comme un argument à l'appel de la fonction dans la liste des enfants (foos.bars).
J'ai trouvé un post où quelqu'un recommande l'utilisation de $parent.$de l'index, mais $index
n'est pas une propriété de $parent
.
Comment puis-je accéder à l'index de la société mère 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>
- Il semble fonctionner correctement pour moi. J'ai écrit un plunker montrer de travail: plnkr.co/modifier/BenCDh4NUGPPHKWGsGMr?p=preview Pouvez-vous fournir plus de détails?
- Je vous remercie pour cela. Elle m'a amené à trouver mon problème est un bug dans mon balisage.
- veuillez envisager de supprimer cette question.
- J'ai pensé à ça hier soir, mais pensé qu'il serait utile à d'autres personnes à la recherche pour savoir comment faire cela, alors je l'ai laissé.
- Eh bien, si vous voulez le garder, s'il vous plaît ajouter une réponse et de l'accepter (si cette question ne reste pas sur les "sans réponse" de la liste).
Vous devez vous connecter pour publier un commentaire.
Mon exemple de code était correct et que le problème était autre chose dans mon code. Pourtant, je sais que c'était difficile de trouver des exemples de ce que je suis d'y répondre dans le cas où quelqu'un d'autre est à la recherche.
ng-if
dans le code que je viens de découvrir.ng-if
exige et supplémentaires$parent
de référence. M'a sauvé quelques maux de tête.Selon ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat, vous pouvez stocker la clé ou l'indice de tableau dans la variable de votre choix.
(indexVar, valueVar) in values
de sorte que vous pouvez écrire
D'un niveau est toujours très propre avec $parent.$indice, mais plusieurs parents, les choses peuvent déraper.
Remarque:
$index
continuera à être définie pour chaque champ, il n'est pas remplacé parfIndex
.$parent.$index
un(fIndex, f)
méthode, $index sera toujours définie (pas omis) - de sorte que l'indice devient accessible à la fois comme$index
etfIndex
.$index
ne fonctionne pas, mais l'ajout de lafIndex
n'. Je n'ai pas une seule idée de pourquoi$index
ne fonctionne pas (il le fait dans d'autres endroits dans mon code), mais après avoir lutté pendant plusieurs jours, j'ai arrêté de prendre soin lorsque j'ai trouvé cette réponse. Il est aussi un peu plus lisible lorsque vous avez plusieursng-repeat
s de l'OMI.ng-repeat
itération crée son propre champ d'application, qui définit également ses propres$index
, en écrasant le parent$index
. Si vous incluez un{{$index}}
juste au-dessus ou au-dessous du plus profondng-repeat
-ed élément, vous verrez le parent de la valeur, et de le mettre à l'intérieur le plus intimeng-repeat
-ed élément va vous montrer de l'enfant. L'utilisation de l'approche dans cette réponse, attribue l'index du parent à une variable dont le nom que vous avez choisi (fIndex
) donc il ne sera pas remplacé par un enfant.Prendre un coup d'oeil à ma réponse à une question similaire.
Par aliasing
$index
nous n'avons pas d'écrire des trucs dingues comme$parent.$parent.$index
.Façon plus élégante solution whan
$parent.$index
est à l'aide de ng-init:Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
Vous pouvez également obtenir le contrôle de la grand-mère de l'indice par le code suivant
Vous pouvez simplement utiliser $parent.$index .où les parents vont représenter l'objet de parent répéter objet .
$parent ne fonctionne pas s'il y a plusieurs parents. au lieu de cela, nous pouvons définir un parent de l'indice de la variable dans l'init et l'utiliser