我编写了一个循环遍历数组的助手,但现在我仍然坚持为每次迭代获取索引。我希望在我看来打印当前项目的索引。
helpers: {
each_min: function(ary, min, options) {
if(!ary || ary.length == 0)
return options.inverse(this);
var result = [];
for(var i = 0; i < min; ++i)
result.push(options.fn(ary[i]));
return result.join('');
}
}
我的模板
{{#each_min p.name 4}}
{{#if this}}
{{index}} {{this}}
{{else}}
<p>-</p>
{{/if}}
{{/each_min}}
答案 0 :(得分:1)
通过查看手柄文档,我在Block helpers部分找到了相关信息。
块帮助程序还可以将私有变量注入其子模板。这对于添加原始上下文数据中不存在的额外信息非常有用。 ...确保在每个帮助程序中创建一个新数据框,以分配自己的数据。否则,下游帮助程序可能会意外地改变上游变量。
基于我做出这些改变:
模板:
{{#each_min p.name 4}}
{{#if this}}
{{@index}} {{this}}
{{else}}
<p>-</p>
{{/if}}
{{/each_min}}
<强>辅助强>:
function(ary, min, options) {
if(!ary || ary.length === 0) {
return options.inverse(this);
}
var data;
if (options.data) {
data = Handlebars.createFrame(options.data);
}
var result = [];
for(var i = 0; i < min; ++i) {
if (data) {
data.index = i;
}
result.push(options.fn(ary[i], {data: data}));
}
return result.join('');
}