2

模板

   <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块已执行,但输出返回的是false而不是<span>String</span>.

4

1 回答 1

2

您使用错误的助手或有错误的助手。

在第一种情况下,更改模板以使用{{#if}}帮助程序:

{{#if (isObject this)}}
    <span>Object</span>
{{else}}
    <span>String</span>
{{/if}}

看看这个小提琴

在第二种情况下,您需要{{else}}自己在助手内部实现逻辑。
查看 Handlebars 块助手文档以了解条件

于 2015-04-30T11:31:48.253 回答