循环内的车把助手

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 块助手文档