I have a custom helper, as follows:
Handlebars.registerHelper('hasAccess', function(val, fnTrue, fnFalse) {
return val > 5 ? fnTrue() : fnFalse();
});
and my template, as follows:
{{#hasAccess this.access}}
You have access!
{{else}}
You do not have access
{{/hasAccess}}
It works, except fnFalse is undefined. So, how am I supposed to render the 'else' branch?
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With