Emberのドキュメントを確認しましたが、init
をオーバーライドするときに_super
メソッドが呼び出される場所に矛盾が見られます。
これは最も一般的で、私がこれまで使用してきたものです
var Foo = Em.Object.extend({
init: function(){
this._super();
// ... my stuff ...
}
});
昨夜私は読んでいました この書き込み そしてこれを行う例を見ました
var Bar = Em.Object.extend({
init: function(){
// ... my stuff ...
return this._super();
}
});
実際には、コードスニペットではEmber.ContainerView
でした。
誰かがこれを説明できますか?私のコードOCDは機能していて、私が知るまで先に進むことができません。
リンクされたドキュメントで
_ init: function() {
var childViews = this.get('childViews');
var descriptionView = App.DescriptionView.create();
childViews.pushObject(descriptionView);
this.addButton();
return this._super();
},
_
_super()
は、descriptionViewが作成され、childViews
配列にプッシュされた後に呼び出されます。
これは、スーパークラスinit
の実装がchildViews配列を取得し、それを処理するためです。配列にdescriptionView
を追加する前に__super
_を呼び出した場合、init
が実行する処理は実行されません。
私は推測していますが、それがSproutcoreでの動作方法であり、そこからEmberが派生するので、おそらく同じだと思います。