Helper
Ember.Helper Class
PUBLIC
Defined in: packages/ember-glimmer/lib/helper.js:12
Module: ember-glimmer
Ember Helpers are functions that can compute values, and are used in templates. For example, this code calls a helper named format-currency
:
<div>{{format-currency cents currency="$"}}</div>
Additionally a helper can be called as a nested helper (sometimes called a subexpression). In this example, the computed value of a helper is passed to a component named show-money
:
{{show-money amount=(format-currency cents currency="$")}}
Helpers defined using a class must provide a compute
function. For example:
export default Ember.Helper.extend({ compute(params, hash) { let cents = params[0]; let currency = hash.currency; return `${currency}${cents * 0.01}`; } });
Each time the input to a helper changes, the compute
function will be called again.
As instances, these helpers also have access to the container an will accept injected dependencies.
Additionally, class helpers can call recompute
to force a new computation.
compute (params, hash) public
Override this function when writing a class-based helper.
Parameters:
-
params
Array
- The positional arguments to the helper
-
hash
Object
- The named arguments to the helper
helper (helper) publicstatic
In many cases, the ceremony of a full Ember.Helper
class is not required. The helper
method create pure-function helpers without instances. For example:
// app/helpers/format-currency.js export default Ember.Helper.helper(function(params, hash) { let cents = params[0]; let currency = hash.currency; return `${currency}${cents * 0.01}`; });
Parameters:
-
helper
Function
- The helper function
recomputepublic
On a class-based helper, it may be useful to force a recomputation of that helpers value. This is akin to rerender
on a component.
For example, this component will rerender when the currentUser
on a session service changes:
// app/helpers/current-user-email.js export default Ember.Helper.extend({ session: Ember.inject.service(), onNewUser: Ember.observer('session.currentUser', function() { this.recompute(); }), compute() { return this.get('session.currentUser.email'); } });
© 2017 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://emberjs.com/api/classes/Ember.Helper.html