Angularjs - Comment garder le nombre total d'itérations à travers imbriquée ng-repeat dans le modèle
J'ai un assez grand objet qui doit être itéré dans les ng-repeat boucles
Une version simplifiée ressemble à ceci:
{{totalEvents = 0}}
<div ng-repeat="(mainIndex, eventgroup) in EventsListings">
<ul>
<li ng-repeat="event in eventgroup.events" ng-click="Current(totalEvents)">
<div class="event-item-container" ng-show="eventDetailsView[totalEvents]">
{{totalEvents = totalEvents + 1}}
</div>
</li>
</ul>
</div>
{{totalEvents = 0}
Comment puis-je garder une trace de totalEvents valeur du compteur.. Comment puis-je obtenir un nombre total d'itérations à travers les boucles imbriquées DANS le modèle?
- avez-vous besoin d'indices? quelle est cette condition ? ng-show="eventDetailsView[totalEvents]" ? et ce ng-click="Current(totalEvents)"? dites à votre objectif, notre part de vos js ou créer plunker...
- J'ai besoin de basculer le vrai et le faux pour ng-show, pour l'élément I de survoler.. le problème que j'ai c'est que pour chaque itération externe de la répétition des indices de l'intérieur de l'itération de répéter et je n'arrive pas à isoler le point je suis plus.. je suis en train d'attacher quelque chose de tout à fait unique à chaque itération.. je suis sûr que je suis aussi en manque juste quelque chose d'évident :/
Vous devez vous connecter pour publier un commentaire.
vous pouvez atteindre beaucoup de valeur à l'aide de
$index
propriété deng-repeat
...HTML
voici de travail PLUNKER
Mise à JOUR
Après un certain temps et certains commentaires, j'ai réalisé que mon code n'est pas de calcul du nombre total d'itérations correctement, j'ai donc fait quelques modifications pour le fixer.
Première erreur que j'ai faite de toute façon je pensais numéros de l'événement sera égale pour chaque série, le second, s'il y a plus de 2 définit une fois de plus qu'il échoue.
Donc pour garder une trace de total d'itérations j'ai mis un tableau qui s'appelle totalIterations dans le code. Dans ce tableau j'ai mis nombre total d'événements que nous avons déjà itérer jusqu'à présent,
Par exemple à l'arrivée de la première série, il sera de la longueur du premier groupe d'épreuves et pour la deuxième, il sera le premier et le deuxième groupe, et ainsi de suite... Pour la réalisation de cela, j'ai utilisé ng-repeat-end directive voici le code final
et voici la dernière PLUNKER
Je veux suggérer différentes façon d'aborder cette question, je pense que c'est assez cool et facile :
Dans le modèle :
Dans le contrôleur :
Si vous voulez vraiment le modèle de lecteur de ce calcul, vous pouvez garder un compteur dans le Contrôleur et créer une fonction qui incrémente le compteur. Ensuite appeler cette fonction à partir du modèle.
Honnêtement, même si, il semble très étrange pour mettre ce genre de logique dans la vue. Il serait beaucoup plus logique de simplement faire un appel récursif à compter en pur Javascript dans le Contrôleur.