JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8777
  • Score
    100M100P100Q141437F
  • License MIT

A slightly more idiomatic way to invoke actions in your Ember components

Package Exports

  • ember-invoke-action

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ember-invoke-action) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ember-invoke-action

NPM Version Build Status Ember Observer Score

A slightly more idiomatic way to invoke actions in your Ember components.

Installation

ember install ember-invoke-action

How To

You can either use ember-invoke-action as a helper function or a mixin.

Mixin usage

import Ember from 'ember';
import { InvokeActionMixin } from 'ember-invoke-action';

export default Ember.Component.extend(InvokeActionMixin, {
  click(...args) {
    this.invokeAction('click', ...args);
  }
});

Helper usage

import Ember from 'ember';
import { invokeAction } from 'ember-invoke-action';

export default Ember.Component.extend({
  click(...args) {
    invokeAction(this, 'click', ...args);
  }
});

strictInvokeAction

As alternative to invokeAction you can call strictInvokeAction. strictInvokeAction is functionally the same as invokeAction except for when the given action could not be found, then strictInvokeAction will raise an AssertionError.

invoke

With the invoke helper you can call other actions from the actions object as if it is a closure action.

import Ember from 'ember';
import { invoke } from 'ember-invoke-action';

export default Ember.Component.extend({
  actions: {
    saveModel() {
      return get(this, 'model').save();
    },

    closeModal() {
      set(this, 'modalVisible', false);
    },

    saveModelAndClose(...args) {
      invoke(this, 'closeModal');
      return invoke(this, 'saveModel');
    }
  }
});

Linting

  • npm run lint:js
  • npm run lint:js -- --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Credits

This code was inspired by @miguelcobain, I just made an addon out of it.

License

This project is licensed under the MIT License.