У меня есть контроллер, расширенный дочерним контроллером. Этот дочерний элемент должен сначала отобразить элемент, а затем поднять переопределенную родительскую функцию. Вот мой абстрактный код:
Ext.define('ParentController', {
extend: 'Ext.app.Controller',
//lot of code
myFunction(){
//....
this.getSomething();
}
}
а затем есть контроллер, расширяющий этот существующий:
Ext.define('ChildController', {
extend: ParentController,
onlyChildFunction(dummy){
//create element
...
element.onClosed = function(){
dummy();
}
return element;
}
//override
myFunction(){
//this.callParent();
var element = onlyChildFunction( this.self.superclass.myFunction() );
element.show();
}
Передача функции суперкласса не работает, потому что ParentController использует множество ссылок на экземпляр ParentController (этот).
Я не хочу копировать код из ParentController напрямую, потому что это означало бы поддерживать одну и ту же функцию дважды. Одним из способов может быть повторный вызов myFunction() для element.onClosed и создание там какого-то флага только для выполнения callParent(). Но это звучит уродливо - есть лучшие предложения?
Заранее спасибо - помощь приветствуется!