循环内的车把助手
Handlebars helpers inside loop
模板
<script id='handlebar-template'>
{{#each tags}}
{{#isObject this}}
<span>Object</span>
{{else}}
<span>String</span>
{{/isObject}}
{{/each}}
</script>
脚本
<script>
Handlebars.registerHelper('isObject', function(o) {
return typeof o === "object";
});
var props = {"tags": ["Google"]}
var html = $("#handlebar-template").html();
var template = Handlebars.compile(html);
console.log(template(props));
</script>
预期输出
<span>String</span>
实际输出
false
else
块被执行但输出 returns 是 false
而不是 <span>String</span>
.
您使用的帮助器有误或使用了错误的帮助器。
在第一种情况下,更改模板以使用 {{#if}}
助手:
{{#if (isObject this)}}
<span>Object</span>
{{else}}
<span>String</span>
{{/if}}
看看这个fiddle。
第二种情况,你需要自己在helper里面实现{{else}}
逻辑。
查看 conditionals.
的 Handlebars 块助手文档
模板
<script id='handlebar-template'>
{{#each tags}}
{{#isObject this}}
<span>Object</span>
{{else}}
<span>String</span>
{{/isObject}}
{{/each}}
</script>
脚本
<script>
Handlebars.registerHelper('isObject', function(o) {
return typeof o === "object";
});
var props = {"tags": ["Google"]}
var html = $("#handlebar-template").html();
var template = Handlebars.compile(html);
console.log(template(props));
</script>
预期输出
<span>String</span>
实际输出
false
else
块被执行但输出 returns 是 false
而不是 <span>String</span>
.
您使用的帮助器有误或使用了错误的帮助器。
在第一种情况下,更改模板以使用 {{#if}}
助手:
{{#if (isObject this)}}
<span>Object</span>
{{else}}
<span>String</span>
{{/if}}
看看这个fiddle。
第二种情况,你需要自己在helper里面实现{{else}}
逻辑。
查看 conditionals.