2012-06-01 19 views
16

Ember belgelerinden geçiyordum ve init geçersiz kılınırken _super yönteminin çağrıldığı bir tutarsızlık görüyorum.Ember.js nerede this._super()

Bu en yaygın ve bu

var Bar = Em.Object.extend({ 
    init: function(){ 
     // ... my stuff ... 
     return this._super(); 
    } 
}); 

Aslında bir oldu yapıyor örnek

var Foo = Em.Object.extend({ 
    init: function(){ 
     this._super(); 
     // ... my stuff ... 
    } 
}); 

dün gece this write up içinden okuyordu bugüne kadar kullanıyor ve testere şey bu Kod snippet'inde Ember.ContainerView.

Bunu açıklayan var mı? Kodum OKB hareket ediyor ve bildiğim kadar devam edemiyorum. belgelerinde

cevap

13

descriptionView oluşturulur ve childViews dizisi üzerine itilir SONRA

init: function() { 
    var childViews = this.get('childViews'); 
    var descriptionView = App.DescriptionView.create(); 
    childViews.pushObject(descriptionView); 
    this.addButton(); 
    return this._super(); 
    }, 

_super()

adlandırılır bağlı. üst sınıf init uygulama childViews dizi alacak ve onunla şeyler çünkü var

. Eğer diziye descriptionView eklemeden önce _super denilen, bu ben çıkarım ediyorum

.... init ne yaparsa tarafından işlenmesini olmaz, ama böylece Ember türediği o Sproutcore çalışma şekline, var Sanırım muhtemelen aynı.

+0

Ah evet, çağıran 'super' en' iki kez işlemek zorunda yükü kaldıracak 'childView' dizi başlatılıyor sonra init'. –