javascriptember.jshandlebars.jshtmlbarsember-components

Combine linkTo and action helpers in Ember.js


I need to combine linkTo and action helpers in Ember.js. My code is:

{{#link-to 'index'}}<span {{action 'clear'}}>Clear</span>{{/link-to}}

But I would like to make this something like this:

{{#link-to 'index' {{action 'clear'}} }}Clear{{/link-to}}

And also:

<li>
    {{#link-to 'support'}}
        <span {{action 'myAction' 'support'}}>Support</span>
    {{/link-to}}
</li>

To:

<li>
    {{#link-to 'support' {{action 'myAction' 'support'}} }}Support{{/link-to}}
</li>

How can I achieve this?

Solution

Check my answer for Ember 2.0 compatible, OK for SEO solution.


Solution

  • Ember Link Action addon

    This is OK for SEO solution!

    Install addon

    ember install ember-link-action
    

    Usage

    You can pass closure action as invokeAction param to {{link-to}} component:

    {{#link-to 'other-route' invokeAction=(action 'testAction')}}
      Link to another route
    {{/link-to}}
    

    To pass parameters to action you can use:

    {{#link-to 'other-route' invokeAction=(action 'testAction' param1 param2)}}
      Link to another route
    {{/link-to}}
    

    Compatibility

    Automated test suite confirms that addon works with 1.13 up to latest Ember 3 releases.

    It works with a release, beta and canary versions of Ember.

    Addon GitHub repository. Contributions are welcome.