¿Cómo get el índice en los manubrios de cada ayudante?

Estoy usando manubrios para templates en mi proyecto. ¿Hay alguna manera de get el índice de la iteración actual de un "cada" ayudante en manubrios?

<tbody> {{#each item}} <tr> <td><!--HOW TO GET ARRAY INDEX HERE?--></td> <td>{{this.key}}</td> <td>{{this.value}}</td> </tr> {{/each}} </tbody> 

En las versiones más nuevas del índice de manubrios (o key en el caso de la iteración de objects) se proporciona de forma pnetworkingeterminada con el estándar cada ayudante.


fragment de: https://github.com/wycats/handlebars.js/issues/250#issuecomment-9514811

El índice del elemento del arreglo actual ha estado disponible desde hace un time a través de @index:

 {{#each array}} {{@index}}: {{this}} {{/each}} 

Para la iteración de objects, use @key en su lugar:

 {{#each object}} {{@key}}: {{this}} {{/each}} 

Esto ha cambiado en las versiones más nuevas de Ember.

Para matrices:

 {{#each array}} {{_view.contentIndex}}: {{this}} {{/each}} 

Parece que el bloque #each ya no funciona en los objects. Mi sugerencia es rodar su propia function auxiliar para ello.

Gracias por este consejo .

Sé que esto es demasiado tarde. Pero resolví este problema con el siguiente código:

Java Script:

 Handlebars.registerHelper('eachData', function(context, options) { var fn = options.fn, inverse = options.inverse, ctx; var ret = ""; if(context && context.length > 0) { for(var i=0, j=context.length; i<j; i++) { ctx = Object.create(context[i]); ctx.index = i; ret = ret + fn(ctx); } } else { ret = inverse(this); } return ret; }); 

HTML:

 {{#eachData items}} {{index}} // You got here start with 0 index {{/eachData}} 

si quiere comenzar su índice con 1, debe hacer el siguiente código:

Javascript:

 Handlebars.registerHelper('eachData', function(context, options) { var fn = options.fn, inverse = options.inverse, ctx; var ret = ""; if(context && context.length > 0) { for(var i=0, j=context.length; i<j; i++) { ctx = Object.create(context[i]); ctx.index = i; ret = ret + fn(ctx); } } else { ret = inverse(this); } return ret; }); Handlebars.registerHelper("math", function(lvalue, operator, rvalue, options) { lvalue = parseFloat(lvalue); rvalue = parseFloat(rvalue); return { "+": lvalue + rvalue }[operator]; }); 

HTML:

 {{#eachData items}} {{math index "+" 1}} // You got here start with 1 index {{/eachData}} 

Gracias.

En la versión 3.0 del manillar en adelante,

 {{#each users as |user userId|}} Id: {{userId}} Name: {{user.name}} {{/each}} 

En este ejemplo particular, el usuario tendrá el mismo valor que el context actual y userId tendrá el valor de índice para la iteración. Consulte – http://handlebarsjs.com/block_helpers.html en la sección de ayudantes de bloque

Arrays:

 {{#each array}} {{@index}}: {{this}} {{/each}} 

Si tiene matrices de objects … puede recorrer los elementos secundarios:

 {{#each array}} //each this = { key: value, key: value, ...} {{#each this}} //each key=@key and value=this of child object {{@key}}: {{this}} //Or get index number of parent array looping {{@../index}} {{/each}} {{/each}} 

Objetos:

 {{#each object}} {{@key}}: {{this}} {{/each}} 

Si tiene objects nesteds, puede acceder a la key del object principal con {{@../key}}