有谁知道如何成功调用ext js 3.4中的超类? 在我的示例代码中,我似乎无法让超类在面板上工作。
MyWindow = Ext.extend(MyWindowUi, {
initComponent: function() {
MyWindow.superclass.initComponent.call(this);
this.createTextField();
},
createTextField : function() {
var p = new Ext.Panel({
title: 'somepanel',
initComponent: function() {
console.log('init component');
console.log(this);
this.superclass.initComponent.call(this); //NOT WORKING??
}
});
this.add(p);
}
});
答案 0 :(得分:0)
请尝试Ext.Panel.superclass.initComponent.call(this)
。
答案 1 :(得分:0)
它不起作用,因为在创建p时你没有调用Ext.Panel的initComponent。如果你要使用前一个方法的超类调用来覆盖一个方法,那么如果不需要范围技巧,Ext.extend会更干净。
您还可以执行以下操作:
createTextField : function() {
var p = new Ext.Panel({
title: 'somepanel'
}),
oldInit = p.initComponent;
p.initComponent = function() {
console.log('init component');
console.log(this);
oldInit.call(this);
}
this.add(p);
}
或类似的东西:
createTextField : function() {
var p = new Ext.Panel({
title: 'somepanel',
initComponent: function() {
console.log('init component');
console.log(this);
Ext.Panel.prototype.initComponent.call(this);
}
});
this.add(p);
}
但他们都是丑陋的imo。