#

API Docs for: v2.11.1
Show: Inherited Protected Private Deprecated

# Ember.Helper Class

Defined in: `packages/ember-glimmer/lib/helper.js:12`
Module: ember-glimmer
Parent Module: ember

Available since 1.13.0

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.

- Index
- Methods

## Item Index

### Methods

- compute
- helper static
- recompute

## Methods

### `compute`

(

- `params`
- `hash`

)
public

Defined in `packages/ember-glimmer/lib/helper.js:88`

Available since 1.13.0

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`

)
public static

Defined in `packages/ember-glimmer/lib/helper.js:103`

Available since 1.13.0

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

### `recompute`

() public

Defined in `packages/ember-glimmer/lib/helper.js:60`

Available since 1.13.0

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');
      }
    });