在余烬把手的嵌套循环中获取索引计数器

Getting index counter in nested loop of embers handlebar

我关注 http://mozmonkey.com/2014/03/ember-getting-the-index-in-each-loops/ 博客 post 通过 helper 添加索引计数器。这对于单个 each 循环非常有效。但是当我将它与嵌套的每个循环一起使用时,值会重复。示例:

{{#each item in data}}
    {{#eachIndexed record in item.innerdata}}
       {{index_1}}
    {{/eachIndexed}}
{{/each}}

我在数据中有两个对象,在每个内部数据中有两个对象。预期结果是

1 2 3 4

但我得到

1 2 1 2

如何获得预期结果?我的车把版本是 1.1.2,ember 版本是 1.6.1。

如果您的数据是:

[
  {innerdata: ['foo', 'bar']},
  {innerdata: ['foo', 'bar']}
]

然后它按预期工作,因为它是索引而不是计数器。

{{#each item in data}}
    Outer Index: {{index_1}}<br>
    {{#eachIndexed record in item.innerdata}}
       Inner Index: {{index_1}}<br>
    {{/eachIndexed}}
{{/each}}

将输出:

Outer Index: 1
Inner Index: 1
Inner Index: 2
Outer Index: 2
Inner Index: 1
Inner Index: 2

如果你想计算迭代次数,你可以试试这个答案:

(function() {
  var positionCounter = 1;

  Handlebars.registerHelper('position', function() {
    return positionCounter++;
  });
})();

这给你:

{{#each item in data}}
    {{#eachIndexed record in item.innerdata}}
       {{position}}
    {{/eachIndexed}}
{{/each}}

Nested each blocks may access the interation variables via depth based paths. To access the parent index, for example, {{@../index}} can be used.

来源:http://handlebarsjs.com/builtin_helpers.html