I can\'t catch up with all those changes done to plain Handlebars and modified Ember Handlebars helpers. If I remember correctly you can register a helper with the following
Ember.Handlebars.registerHelper
is a basic helper that does not bind the argument string to a property. For instance, consider a hello
helper created with registerHelper
that just returns a greeting message.
Ember.Handlebars.registerHelper('hello', function(name) {
return 'Hello ' + name;
});
When you use it in a template,
{{hello name}}
You will get the display text as, Hello name
. The value of the name
property is not looked up.
To get the value of the name
property into the helper you need, registerBoundHelper
. As the name suggests it creates a binding between to the name
property. Anytime the name
changes the helper is called again to rerender. The implementation is similar,
Ember.Handlebars.registerBoundHelper('hello', function(name) {
return 'Hello ' + name;
});
The Ember.Handlebars.helper
is same as registerBoundHelper
with some additional checks to autodetect what kind of helper you want.
The vanilla Handlebars.registerHelper
isn't used within Ember. It would create similar helpers for projects not using Ember.
Ember.Handlebars.helper
should be used by to register helpers, other methods are just limited versions of it. Ember.Handlebars.helper
renders HTML with bindings that keep views and models in sync. Functions, Views and Components can be supplied as helper definitions.
Ember.Handlebars.registerBoundHelper
is just like Ember.Handlebars.helper
, but you can supply only a Function as a helper definition.
Ember.Handlebars.registerHelper
previously delegated to Handlebars.registerHelper
. Ember.Handlebars.registerHelper
no longer exists, but Handlebars.registerHelper
is still used internally by Ember
to create all the helpers after the bindings are set up.