2013-08-29 21 views
5

Son zamanlarda, yollar/denetleyiciler/görünümler üzerinde Ember.js was updated so that action event handlers are defined in an actions object. Sonuç olarak, olay işleyicileri prototipte artık normal yöntemler değildir.Bir Ember denetleyicisinde bir olay işleyicisinden "süper" çağrısı

extend'u kullanarak bir (örneğin) denetleyiciyi alt sınıf olarak sınıflandırırsanız, geçersiz kılmayı ve sonra üst sınıfın işleyicisini çağırmak mümkün müdür?

Sadece _super çalışmıyor çağırarak:

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 
     } 
    } 
}); 

cevap

4

Kor yapmaya çalışıyorsun ne yapmak mümkün kılar. kendilerine _super mevcut olması için

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); 
    } 
    } 
}); 

Kor bir nesne yaratıyor, özel olarak bu fonksiyonları sarar: İşte bu nasıl çalıştığını gösteren bir JSFiddle olduğunu.

Uygulamanızın daha fazlasını paylaşmak isterseniz, kodunuzun neden JSFiddle demonstrasyonunun davranışını yapmadığını anlamaya çalışabilirim.