把手帮助内部循环

时间:2015-04-30 10:50:20

标签: javascript handlebars.js handlebarshelper

模板

   <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>

1 个答案:

答案 0 :(得分:2)

您正在使用帮助程序错误或帮助程序错误。

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

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

看看这个fiddle

在第二种情况下,您需要在帮助程序中自己实现{{else}}逻辑 查看Handlebars阻止conditionals的帮助文档。