2016-03-22 13 views
0

Neden birbir EmberJs model nesnesini geçersiz kılmamaları önerilir? init yöntemi? EmberJs modelleri için, neden "init" yöntemini geçersiz kılmamanız önerilir

Bu kodu uygulanan ve (sanırım şimdilik) mükemmel iyi çalışıyor: init üzerine

import Ember from 'ember'; 

export default Ember.Object.extend({ 
    init() { 
     this._super(); 
     if (!this.get('type')) { 
      this.set('type', this.get('typeDefault')); 
     } 
    }, 
}); 

EmberJs docs here

İşte bunu tavsiye değil bir makale vardır.

https://dockyard.com/blog/2014/04/28/dont-override-init

cevap

1

init geçersiz kılma yanlış bir şey kesinlikle yoktur. Bazı durumlarda yapmanız gerekir. Ortak alternatif, init olayını kullanmaktır, ancak bu olay, nesne oluşturulduktan sonra çağrılan ve set kullanılarak, bu durumda gözlemcilerin ateşlenmesine neden olabileceğinden, aslında afterInit olarak adlandırılmalıdır. https://dockyard.com/blog/2015/10/19/2015-dont-dont-override-init

doğru yolu aramaya init:

init(...args) { 
    this._super(...args); 
    // ... 
} 

veya Babel kullanmıyorsanız:

init: function() { 
    this._super.apply(this, arguments); 
    // ... 
} 
1

nedeni İşte

sen anılan birini çürüten bir makale Neden bazı insanlar tavsiye etmediniz makalenizde belirtilir. this._super(...args) numaralı telefonu aramayı unutursanız ve üst modeliniz de init işlevini geçersiz kılarsa, ana model init çağırılmaz!

Her zaman süper sınıfı çağırdığınız sürece, init işlevini geçersiz kılar.