Component actions should have this.sendAction(<actionName>) as default behavior


Say you have a component with three actions that have no internal functionality. It seems pretty redundant to have to specify an action hash on the component like so:

actions: {
  actionOne: function () {
  actionTwo: function () {
  actionThree: function () {

Is there a reason this.sendAction(<actionName>) can’t be the default for any action in a component that doesn’t specify a custom handler?


Also, reference:

In response to @tomdale with respect to adding more implicit data flow, I don’t think this use case adds any additional implicitness. This behavior is already essentially present in Ember.View, and to my mind, it doesn’t affect the encapsulation of Ember.Component.


I have the following which I use to bubble actions up & potentially rename them as they go:

var slice = [].slice;
export default var sendAction = function(name) {
  return function() {
    var args;
    args = 1 <= arguments.length ?, 0) : [];
    this.sendAction.apply(this, [name].concat(;

Then in my components:

import {sendAction} from 'app/lib/utils';

export default Ember.Component.extend({
  actions: {
    someAction: sendAction("someAction"),
    otherAction: sendAction("renamedAction")

It cuts down on the boilerplate of bubbling actions a tiny bit, but at the same time keeps them documented in the component itself.


I’m curious why you would rename an action in a component when you have the option to map it to anything you want in the template that consumes it?