Comment accéder à la valeur parent @ index dans chaque boucle?
Essayé le suivant:
{{#each company}}
{{#each employee}}
{{../@index}} // how to access company index here?
{{/each}}
{{/each}}
Cela entraîne une erreur:
En attente de 'ID', a obtenu 'DATA'
Cela a fonctionné pour moi:
{{#each company}}
{{setIndex @index}}
{{#each employee}}
{{../index}}
{{/each}}
{{/each}}
JS:
Handlebars.registerHelper('setIndex', function(value){
this.index = Number(value + 1); //I needed human readable index, not zero based
});
Assurez-vous simplement que l'objet company
ne possède pas la propriété index
.
Réponse:{{@../index}}
Dans la documentation d ' Handlebars (voir au bas de la section d'aide "each"):
"Les blocs each
imbriqués peuvent accéder aux variables d'interation via des chemins définis. Pour accéder à l'index parent, vous pouvez par exemple utiliser {{@../index}}
."
NOTE: J'utilise v1.3, donc c'est au moins ce vieux.
RAPPEL: Les aides sont votre dernière meilleure option. 9/10 il y a une meilleure solution.
Il semble y avoir une nouvelle syntaxe dans Ember v2.2.0. J'ai essayé toutes les réponses ici et elles n'ont pas fonctionné pour moi.
Ce que j’ai trouvé efficace, c’est de nommer l’index de la boucle parente et l’index de la boucle enfant.
{{#each parents as |parent parentIndex|}}
{{parentIndex}}
{{#each children as |child childIndex|}}
{{parentIndex}}
{{childIndex}}
{{/each}}
{{/each}}
enregistrer une méthode Helper:
Handlebars.registerHelper('eachWithIndex', function(cursor, options) {
var fn = options.fn, inverse = options.inverse;
var ret = "";
var idx = -1;
//console.log(cursor);
cursor.forEach(function(item){
idx++;
console.log(item.index);
item.index = idx;
ret+=fn(item);
});
return ret;
});
modèle de guidon:
{{#eachWithIndex outer}}
{{#each inner}}
{{../index}} // access outer index like this. I used hanlebars V1.3.0
{{index}} // access inner index
{{/each}}
{{/eachWithIndex}}