transmettre 2 valeurs d’index dans ng-repeat nested

J’ai donc un ng-repeat nested dans un autre ng-repeat afin de créer un menu de navigation. Sur chaque

  • de la boucle ng-repeat interne, j’ai défini un ng-click qui appelle le contrôleur correspondant pour cet élément de menu en transmettant l’index $ pour que l’application sache lequel nous avons besoin. Cependant, je dois également passer l’index $ du ng-repeat externe afin que l’application sache dans quelle section nous sums et quel tutoriel.

     
    • {{section.name}}
      • {{tutorial.name}}

    voici un Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview

    Chaque ng-repeat crée une étendue enfant avec les données transmises et ajoute également une variable $index supplémentaire dans cette scope.

    Donc, vous devez atteindre la scope parente et utiliser cet $index .

    Voir http://plnkr.co/edit/FvVhirpoOF8TYnIVygE6?p=preview

     
  • {{tutorial.name}}
  • Une solution plus élégante que $parent.$index utilise ng-init :

     
    • {{section.name}}
    • {{tutorial.name}}

    Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info

    Qu’en est-il de l’utilisation de cette syntaxe (jetez un coup d’oeil dans ce plunker ). Je viens de découvrir ça et c’est vraiment génial.

     ng-repeat="(key,value) in data" 

    Exemple:

     
    {{indexX}} - {{indexY}} - {{value}}

    Avec cette syntaxe, vous pouvez donner votre propre nom à $index et différencier les deux index.

    Juste pour aider quelqu’un qui arrive ici … Vous ne devriez pas utiliser $ parent. $ Index car ce n’est pas vraiment sûr. Si vous ajoutez un ng-if dans la boucle, vous obtenez l’index de $ indexé!

    La bonne façon

      
    [{{rowIndex}} - {{columnIndex}}] [{{rowIndex}} - {{columnIndex}}]

    Vérifiez: plnkr.co/52oIhLfeXXI9ZAynTuAJ

    Lorsque vous traitez avec des objects, vous voulez ignorer autant que possible les identifiants simples.

    Si vous changez la ligne de clic pour cela, je pense que vous serez bien sur votre chemin:

     
  • Aussi, je pense que vous devrez peut-être changer

     class="tutorial_title {{tutorial.active}}" 

    à quelque chose comme

     ng-class="tutorial_title {{tutorial.active}}" 

    Voir http://docs.angularjs.org/misc/faq et recherchez ng-class.

    J’essaie d’utiliser la solution proposée par le gonzalon. Mais ça ne marche pas dans mon cas. Je veux avoir une info-bulle avec plus d’informations lorsque la souris survole la cellule de la table que je crée en faisant une boucle sur les lignes et les cellules.

    Les valeurs changent lorsque vous déplacez la souris sur les cellules du tableau, mais les valeurs de la ligne et de la colonne correspondent toujours au numéro de la colonne.

     
    {{zone}}
    {{row[0]}} {{cell[1]}}