2016-03-22 5 views
0

super EmberJsモデルオブジェクトinitメソッドをオーバーライドしないように推奨されるのはなぜですか?EmberJsモデルの場合、なぜ `init`メソッドをオーバーライドしないことをお勧めしますか

私はこのコードを実装し、それは完全に正常に動作している(今のところ、私は推測する):init

import Ember from 'ember'; 

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

EmberJsのドキュメントはここhere

あることを推薦ない1品です。

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

答えて

1

のinitをオーバーライドすることには何も問題は絶対にありません。場合によってはする必要があります。一般的な方法はinitイベントを使用することですが、このイベントはオブジェクトの作成後に呼び出され、setを使用するとオブザーバが起動する可能性があるため、実際にはafterInitと呼びます。ここで

は、あなたが引用1反論記事です:https://dockyard.com/blog/2015/10/19/2015-dont-dont-override-init

initを呼び出すための正しい方法:

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

か、バベルを使用していない場合:

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

理由なぜあなたの参照された記事に引用されていることをお勧めしない人がいますか? this._super(...args)を忘れて、親モデルがinit関数をオーバーライドする場合、親モデルinitは呼び出されません!

常にスーパークラスを呼び出す限り、init関数をオーバーライドしても問題はありません。

関連する問題