Handlebars custom if helper else is undefined

前端 未结 1 1419
迷失自我
迷失自我 2021-02-07 15:35

I have a custom helper, as follows:

Handlebars.registerHelper(\'hasAccess\', function(val, fnTrue, fnFalse) { 
    return val > 5 ? fnTrue() : fnFalse();
});
         


        
相关标签:
1条回答
  • 2021-02-07 16:10

    Handlebars provides custom helpers an object containing the different functions to apply, options.fn and options.inverse. See https://handlebarsjs.com/guide/block-helpers.html#conditionals

    Your helper could be written as

    Handlebars.registerHelper('hasAccess', function(val, options) {
        var fnTrue = options.fn, 
            fnFalse = options.inverse;
    
        return val > 5 ? fnTrue(this) : fnFalse(this);
    });
    

    And a demo

    Handlebars.registerHelper('hasAccess', function(val, options) { 
        var fnTrue = options.fn, 
            fnFalse = options.inverse;
            
        return val > 5 ? fnTrue() : fnFalse();
    });
    
    var template = Handlebars.compile($('#tpl').html() );
    $("body").append( "<h1>access : 1</h1>" );
    $("body").append( template({access:1}) );
    
    $("body").append( "<h1>access : 6</h1>" );
    $("body").append( template({access:6}) );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.min.js"></script>
    
    <script type='text/template' id='tpl'>
    {{#hasAccess this.access}}
        You have access!
    {{else}}
        You do not have access
    {{/hasAccess}}
    </script>

    0 讨论(0)
提交回复
热议问题