2

我被告知使用 .on('init') 而不是覆盖 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