Calling a controllers method in another controller Ember

mohsinali1317 picture mohsinali1317 · Apr 4, 2014 · Viewed 10.8k times · Source

I am using Ember's Need Api to call a method of a controller in another controller. I am able to get the instance of the controller but when I am calling it method it returns me this error TypeError: Object [object Object] has no method.

This is how I am calling it:

Cards.CardsIndexController = Ember.Controller.extend({
    needs: 'account_info',
     actions: {
        accountInfoStart:function(){
               console.log(this.get('controllers.account_info').test()); // error here


        }
    }
});

This is the controller whose function I want to call

Cards.AccountInfoController = Ember.Controller.extend({


    actions:{

        test: function(){

            alert(1);
        }

    }

});

How can I solve it?

Answer

GJK picture GJK · Apr 4, 2014

test is not technically a method, but an action or event. Use the send method instead:

this.get('controllers.account_info').send('test', arg1, arg2);