Id id-repeat dynamique

J'essaie de définir un identifiant dynamique dans mon div dans ma ng-repeat. Permettez-moi de montrer un exemple.

<div id="$index" ng-repeat="repeat in results.myJsonResults"> <div id="$index" ng-click="saveID($index)" ng-repeat="subRepeat in results.myJsonResults.subresults"> </div> 

Mon problème est que, lorsque je clique sur mon div entre les enfants, je souhaite obtenir mon nom d'identifiant parent, mais il semble que l'angulaire ne règle pas correctement l'ID dans la division. Est-il possible de définir une ID dynamique dans ce concept?

PS: J'ai essayé, par le passé, de créer une méthode de compteur sur mon contrôleur et de définir un index, mais il s'avère que l'angulaire reconnaît uniquement la dernière valeur de cette ID.

Pour répondre à votre question, essayez ceci:

 <div id="{{$index}}" ...> 

Alors que ce qui précède devrait fonctionner, ce n'est peut-être pas ce que vous voulez vraiment (!). Notez qu'il est plutôt rare que AngularJS manipule des éléments en les référant par ID.

Vous devriez vous concentrer sur votre modèle, déclarer décrire l'interface utilisateur et laisser AngularJS faire le reste sans manipuler DOM à bas niveau "à la main".

Un cas d'utilisation que je peux penser est d'associer les éléments <label> à leurs éléments <input> respectifs, comme on l'a vu dans http://jsfiddle.net/YqUAp/

Appliqué, il existe une méthode pkozlowski.opensource

 <label for="{{ 'textField-' + $index }}">Option {{ $index }}</label> <input type="text" id="{{ 'textField-' + $index }}" ng-model="field"/> 

Bien que je ne sache pas si c'est la méthode la plus efficace. (Même si seulement pour la lisibilité)

 <div id="{{$index}}" ...> 

Fonctionne bien, mais vous pouvez également mettre un identifiant dynamique avec le champ répété si – par exemple – sousRepeat aurait un champ d'identification. Ce serait:

 <div id="subRepeat{{subRepeat.id}}" ...> 

Cela mettra des ids comme subRepeat1, subRepeat2, … sur votre div répété

Vous devez tenir l'index dans vos objets

 results = { myJsonResults : [ { name: "abc", id: 1, subResults: [ { subName: "123", id: 1 }, { subName: "456", id: 2 }] } { name: "xyz", id: 2, subResults: [ { subName: "789", id: 1 }, { subName: "098", id: 2 }] } ] }; 

De plus, votre répétition se réfère aux résultats, qui les déconnecte, utilisez plutôt thisResult:

 <div id="thisResult.id" ng-repeat="thisResult in results.myJsonResults"> {{ thisResult.name }} <div id="subResult.id" ng-click="saveID(subResult.id)" ng-repeat="subResult in thisResult.subResults"> {{ subResult.subName }} </div> </div>