Ember.js - How to trigger view method from controller?
ember.js, javascript
Solution
This sounds like a good use for `Ember.Evented`. By using event subscription and dispatching you can avoid coupling your view and controller.
Simply mixin `Ember.Evented`:
Controller = Ember.Controller.extend(Ember.Evented)
Now you can call `on` and `trigger` methods on your controller, to subscribe to an event and then to kick off the event. So, in your view you might do:
didInsertElement: function () {
this.get('controller').on('loginDidFail', this, this.loginFail);
}
And then in your controller call `this.trigger('loginDidFail')` to kick off your `loginFail` view method.
Remember to remove the handler after the view is dismissed... see the answer below.
Problem
I'm trying to call view method from controller, but no idea how to do this. From view I can easily call controller method like `this.get('controller').send('method');` How to do something like that from controller `this.get('view').send('method');`? To give you better overview what I'm trying to do. I have application controller `Ember.Controller.extend({})` I have application view `Ember.View.extend({})` and application template. In application template is login form, when user submit it controller method is executed. In this method if login credentials are incorrect I need to call view method which is executing `jQueryUI` method on login form (shake method to be exact and showing some text).