Handlebars lambda helper function args
Hasndlebars fails to pass 'options' object to lambda invoked with no parameters
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.min.js"></script>
<div id="content"></div>
<script id="with-args" type="text/x-handlebars-template">
{{#lambda1 'arg'}}Hello {{name}}{{/lambda1}}
</script>
<script id="no-args" type="text/x-handlebars-template">
{{#lambda0}}Hello {{name}}{{/lambda0}}
</script>
<script>
var cel = document.getElementById('content')
, telOK = document.getElementById('with-args')
, telFAIL = document.getElementById('no-args')
, context = {
name: 'Test',
lambda0: function(options) {
console.log('labda0 got correct args?', arguments.length == 1) // false; should be true
return options.fn(this) // throws, options is undefined
},
lambda1: function(arg, options) {
console.log('lamda1 got correct args?', arguments.length == 2) // true
return options.fn(this)
}
}
// works as expected:
cel.innerHTML += '<p>LAMBDA 1: '+Handlebars.compile(telOK.innerHTML)(context)+'</p>'
try {
cel.innerHTML += '<p> LAMBDA 2: '
cel.innerHTML += Handlebars.compile(telFAIL.innerHTML)(context) // throws
} catch (e) {
cel.innerHTML += e.message
} finally {
cel.innerHTML += '</p>'
}
</script>