2

バインドとエイリアスの同期の問題を回避するために、init() をオーバーライドする代わりに .on('init') を使用するように言われました。ただし、このパターンで継承されたディスパッチの順序を処理する方法がわかりません。

やったことある:

var Superclass = Ember.Object.extend({
    init: function () { /* ... */ }
});

var Subclass = Superclass.extend({
    init: function () {
        // Init superclass first...
        this._super();

        /* ... */
    }
});

しかし、.on('init') イディオムを使用してこれを適切に行う方法がわかりません。

  • スーパークラスとサブクラスの .on('init') 関数の両方を「onInit」と呼ぶと、サブクラスのバージョンだけが呼び出されるようです。これは、新しいサブクラスごとに名前の新しいバージョンを発明する必要があることを意味します (これはすでに役に立たず、名前は必要ありません....)。
  • 代わりに、常に onInit という名前を使用し、以前と同じように this._super() を使用することもできますが、このセマンティックが保証されておらず、いつでも壊れる可能性があるのではないかと心配しています。

これは、私が遭遇した問題と質問を示す JSFiddle です。

http://jsfiddle.net/9fctF/2/

4

0 に答える 0