我有一个Handlebars使用的模板和我的上下文,如下所示:
var context = {
abc: ["a","b","c","d"],
xyz: {
words: {
a: 1,
b: 2,
c: 3,
d: 4
}
}
}
var template = Handlebars.compile(tpl);
var output = template(context);
到此为止一切都很好。但我需要做一些事情:
{{#each abc }}
<li><a data-toggle="tab" href="#{{ ../xyz.words[this] }}"> {{ this }} </a></li>
{{/each }}
我希望在xyz.words上下文中收集key给出的值,但我什么都没得到。相反,如果我只使用{{ this }}
,它可以正常工作并从abc返回一个值。
我在这里缺少什么?
编辑:
顺便说一句,我试图使用助手,这就是我所做的:
Handlebars.registerHelper("whatis", function(key){
return xyz.words[key];
});
{{#each abc }}
<li><a data-toggle="tab" href="#{{ whatis this] }}"> {{ this }} </a></li>
{{/each }}
答案 0 :(得分:1)
您需要创建一个帮助程序,以便使用基于变量的动态键(running example)来访问该对象:
模板:
{{#each abc }}
<li>
{{#getObjectValue ../xyz.words key=this}}
<a data-toggle="tab" href="#{{this}}">
{{/getObjectValue}}
{{ this }} </a>
</li>
{{/each }}
代码:
Handlebars.registerHelper('getObjectValue', function(object, options) {
return options.fn(object[options.hash.key]);
});
var template = Handlebars.compile($("#template").html());
$("#target").html(template(context));