web-dev-qa-db-fra.com

Handlebars.js: Comment accéder à l'index parent imbriqué?

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' 

41
Fdr

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.

26
strah

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.

7
jordanb

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}}
4
Andrew Toy

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}}
0
Fish