这是我的小模型:
var stuff = [{
there: 'blah',
that: {
one: 'bbb',
two: 'ccc'
}
}];
首先,对于下面的模板,我不明白为什么第一个 {{@key}}
没有输出任何内容而第二个有。
{{#each this}}
{{@key}}
{{#each that}}
{{@key}}
{{/each}}
{{/each}}
更重要的是,我正在尝试使用这个模板和一个帮助程序来检查一个值是对象还是字符串,并迭代打印键或只打印键。
{{#each this}}
{{#if isObj this}}
{{#each that}}
{{@key}}
{{/each}}
{{else}}
{{@key}}
{{/if}}
{{/each}}
助手:
Handlebars.registerHelper('isObj', function(thing) {
return $.type(thing) === 'object';
});
{{@index}}
,对于对象键,您可以使用{{@key}}
。通常您应该知道将什么传递给模板。如果您想创建一个像isObj
这样的帮助程序,则应像这样使用它:{{#isObj this}} ... {{else}} ... {{/isObj}}
。有关更多详细信息,请参见handlebars-条件语句。 - t.niese