2013-08-29 11 views
5

Kürzlich, Ember.js was updated so that action event handlers are defined in an actions object auf Routen/Controller/Ansichten. Daher sind Ereignishandler keine normalen Methoden mehr für den Prototyp.Aufruf "Super" von einem Event-Handler auf einem Ember-Controller

Wenn Sie ein (zum Beispiel) Controller extend Unterklasse ist es immer noch möglich, außer Kraft zu setzen und dann die Handler übergeordneten Klasse nennen?

Gerade Aufruf _super funktioniert nicht:

FormController = Em.ObjectController.extend({ 
    actions: { 
     submit: function() { this.get('model').save(); } 
    } 
}); 

SpecialFormController = FormController.extend({ 
    actions: { 
     submit: function() { 
      this.set('special', true); 
      this._super(); // doesn't work 
     } 
    } 
}); 

Antwort

4

Ember es möglich macht, zu tun, was Sie zu tun versuchen. Hier ist ein JSFiddle, die zeigt, wie das funktioniert:

http://jsfiddle.net/HzjUG/1/

App.BaseController = Em.ArrayController.extend({ 
    actions: { 
    nameAlert: function(person){ 
     window.alert('alert from BaseController: ' + person.lastName + ', ' + person.firstName); 
    } 
    } 
}); 

App.IndexController = App.BaseController.extend({ 
    actions: { 
    nameAlert: function(person){ 
     this._super(person); 
     window.alert('alert from IndexController: ' + person.lastName + ', ' + person.firstName); 
    } 
    } 
}); 

Wenn Ember, um ein Objekt zu schaffen, ist es speziell hüllt diese Funktionen so, dass sie _super ihnen zur Verfügung.

Wenn Sie mehr von Ihrer Implementierung teilen möchten, kann ich versuchen, herauszufinden, warum sich Ihr Code nicht so verhält wie die JSFiddle-Demonstration.

Verwandte Themen