有没有办法将每个索引或键传递给把手中的嵌套表达式?
//Not working
{{#each thumbs}}
<img src="{{src}} data-large="{{../images.@key.src}}" alt="">
{{/each}}
//Working with manual passed array index
{{#each thumbs}}
<img src="{{src}} data-large="{{../images.2.src}}" alt="">
{{/each}}
答案 0 :(得分:2)
您可以使用lookup helper和subexpressions。
执行此操作查找助手可以在each
循环中获取给定索引处的图像的哈希值。在该对象上,您需要lookup
src属性。所以这里:
{{#each this.thumbs}}
<p>SRC: {{src}}</p>
<p>LARGE SRC:{{lookup (lookup ../images @index) "src"}}
{{/each}}
您可以在modified demo中看到它。
答案 1 :(得分:0)
我创建了一个自定义辅助方法来实现这个目标:
undefined
这个辅助方法只是将成员(_index,_position)添加到传递的对象中。 (我选择在它们前面添加,以免意外覆盖现有成员。)
您可以这样使用模板:
/**
* Iterates over an array (like the native {{each}} helper,
* but adds to properties to each object: "_index" (a 0-based index) and "_position" (1-based index)
*/
Handlebars.registerHelper('iter', function(context, options) {
var fn = options.fn, inverse = options.inverse;
var ret = "";
if(context && context.length > 0) {
for(var i=0, j=context.length; i<j; i++) {
ret = ret + fn(_.extend({}, context[i], { _index: i, _position: i + 1 }));
}
} else {
ret = inverse(this);
}
return ret;
});
但是,我认为你不需要这里的_position。