如何访问每个循环中的parent @index值?Handlebars.js:如何访问每个嵌套的父索引?
尝试了以下内容:
{{#each company}}
{{#each employee}}
{{../@index}} // how to access company index here?
{{/each}}
{{/each}}
这将导致一个错误:
Expecting 'ID', got 'DATA'
如何访问每个循环中的parent @index值?Handlebars.js:如何访问每个嵌套的父索引?
尝试了以下内容:
{{#each company}}
{{#each employee}}
{{../@index}} // how to access company index here?
{{/each}}
{{/each}}
这将导致一个错误:
Expecting 'ID', got 'DATA'
有一个在示例的语法错误。正确的语法是{{@../index}}
。
我们正在研究如何在未来版本的语言中支持这些参数的自定义命名,以便更轻松地处理。 https://github.com/wycats/handlebars.js/issues/907
这为我工作:
{{#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
});
只要确保company
对象不具有index
属性。
可悲的是这似乎不一样,如果内循环从模板渲染工作:''{{>我的模板}}''产量''无法读取undefined''的特性“指数”。你知道这个解决方案吗? – Lincoln 2013-04-24 12:09:17
@Lincoln你可以尝试这里的建议http://stackoverflow.com/a/18026063/271442 - 我去了包括帮助者的方法。 – mynameistechno 2014-01-29 16:33:40
这是一个了不起的伎俩。我将分享一个jsfiddle链接。谢谢! – 2014-05-09 17:42:36
registe一个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;
});
车把模板:
{{#eachWithIndex outer}}
{{#each inner}}
{{../index}} // access outer index like this. I used hanlebars V1.3.0
{{index}} // access inner index
{{/each}}
{{/eachWithIndex}}
答案:{{@../index}}
从Handlebars docs(见 '各自' 助手部的底部):
“嵌套each
块可以经由depted路径访问互为作用变量要访问。父索引,例如,可以使用{{@../index}}
。“
注意:我使用的是v1.3,因此它至少已经过时了。
提示:助手是你最后的最佳选择。 9/10有一个更好的解决方案。
这是实际的答案 – 2016-01-29 02:07:10
{{@key}}是否也支持旧版本? – ajayv 2017-01-11 20:31:26
它看起来像Ember v2.2.0中有一个新的语法。我在这里尝试了所有的答案,但他们不适合我。
我发现的工作是命名父循环的索引和子循环的索引。
{{#each parents as |parent parentIndex|}}
{{parentIndex}}
{{#each children as |child childIndex|}}
{{parentIndex}}
{{childIndex}}
{{/each}}
{{/each}}
标记正确的答案虽然有帮助,但这是问题的正确答案。 – 2014-11-19 00:53:16
哦看起来像这是第一个实际的答案,我的不好 – 2016-01-29 02:07:52
这不适用于烬v2.2.0。 @安德鲁玩具有正确的答案。 – 2016-02-08 21:10:22