我被告知使用 .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,说明了我遇到的问题: