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

elseblock が実行されますが、出力は isfalseの代わりに返されます<span>String</span>

4

1 に答える 1

2

間違ったヘルパーを使用しているか、間違ったヘルパーを使用しています。

{{#if}}最初のケースでは、ヘルパーを使用するようにテンプレートを変更します。

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

このフィドルを見てください。

{{else}}2 番目のケースでは、ヘルパー内で自分でロジックを実装する必要があります。条件
分岐については、Handlebars ブロック ヘルパーのドキュメントを参照してください。

于 2015-04-30T11:31:48.253 に答える