kristjan reinhold
kristjan reinhold

Reputation: 2048

Ember sending data from view causes error

I sent action from view to currents route controller, then to another controller, in order to write code once.

  this.get('controller.controllers.study/study').send('processPersonData', data);

**DEPRECATION: Action handlers implemented directly on controllers are deprecated in favor of action handlers on an actions object ( action: processPersonData on ) at Ember.ControllerMixin.Ember.Mixin.create.deprecatedSend

What is the right way to implement this send action? FYI: the send action works correctly.

Upvotes: 0

Views: 88

Answers (2)

Duncan Walker
Duncan Walker

Reputation: 2201

If you are trying to call an action in your controller from your view, you should use the Em.ViewTargetActionSupport mixin as follows:

App.DashboardView = Em.View.extend(
    Ember.ViewTargetActionSupport, { // Mixin here

    functionToTriggerAction: function() {
        var data = this.get('data'); // Or wherever/whatever the data object is

        this.triggerAction({
            action: 'processPersonData',
            actionContext: data,
            target: this.get('controller') // Or wherever the action is
        });
    },
});

App.DashboardController = Em.ObjectController.extend(

    // The actions go in a hash, as buuda mentioned
    actions: 
        processPersonData: function(data) {
            // The logic you want to do on the data object goes here
        },
    },
});

Upvotes: 0

buuda
buuda

Reputation: 1427

This message indicates that the method handling the action should be under an 'actions' hash on the object, like so:

App.SomeController = Ember.ObjectController.extend({
    someVariable: null,

    actions: {
        processPersonData: function(context) {
            //implementation
        },
        otherAction: function(context) {
            //implementation
        }
    }
});

It is just new semantics for action handling.

Upvotes: 1

Related Questions