如何在Handlebars中获得每个帮助者的索引?

我在我的项目中使用Handlebars进行模板。 有没有办法获得Handlebars中“每个”助手的当前迭代的索引?

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

在较新版本的Handlebars索引中(或者在对象迭代的情况下是键)默认情况下与标准的每个助手一起提供。


摘录自:https://github.com/wycats/handlebars.js/issues/250#issuecomment-9514811

当前数组项目的索引现在可以通过@index获得一段时间了:

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

对于迭代对象,请使用@key:

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

这在新版本的Ember中已经发生了变化。

对于数组:

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

它看起来像#each块不再在对象上工作。 我的建议是推出自己的帮手功能。

感谢您的提示。


我知道这太迟了。 但我用下面的代码解决了这个问题:

Java脚本:

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

如果你想用1开始你的索引,你应该做下面的代码:

使用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}}

谢谢。

链接地址: http://www.djcxy.com/p/61581.html

上一篇: How to get index in Handlebars each helper?

下一篇: Ember.js + Handlebars custom helper