之前我已经能够将工具放到窗口标题栏中,但是希望能够对Panel做同样的事情。
这是我的尝试:
panel = new Ext.Panel({
id: 'my_panel',
region: 'west',
title:'MyTitle',
iconCls:'helpIcon',
initComponent:function(){
var config = {
tools:[{
id: 'gear',
handler: function(){...}
}]
};
Ext.apply(this, config);
Ext.apply(this.initialConfig, config);
Ext.Panel.superclass.initComponent.apply(this, arguments);
}
}
非常感谢一些建议
JJ
答案 0 :(得分:1)
您的代码中似乎混淆了许多内容。您似乎正在尝试扩展面板并使用region
属性。 region
属性用于边框布局。
这是如何:
panel = new Ext.Panel({
id: 'my_panel',
title:'MyTitle',
iconCls:'helpIcon',
tools:[{
id: 'gear',
handler: function(){...}
}]
});
如果需要扩展,则必须使用Ext.extend()方法。
答案 1 :(得分:1)
之前的帖子是正确的,但我想我会解释你为什么做错了。
您正在重新定义正在创建的对象中的initComponent
Ext.Panel
方法,并且需要运行默认Ext.Panel.initComponent
才能设置tools
之类的内容。
在您的代码中,当您致电Ext.Panel.superclass.initComponent
时,您正在呼叫Ext.BoxComponent.initComponent
,而不是现有的Ext.Panel.initComponent
。
为了执行特殊的initComponent
项内容,然后调用Ext.Panel.initComponent
,您需要创建Ext.Panel
的扩展名:
MyPanelClass = Ext.extend(Ext.Panel, {
id: 'my_panel',
region: 'west',
title:'MyTitle',
iconCls:'helpIcon',
initComponent:function(){
var config = {
tools:[{
id: 'gear',
handler: function(){...}
}]
};
Ext.apply(this, config);
Ext.apply(this.initialConfig, config);
MyPanelClass.superclass.initComponent.apply(this, arguments);
}
});
然后是:
var mypanel = new MyPanelClass();
答案 2 :(得分:0)
你快到了。
panel = new Ext.Panel({
id: 'my_panel',
region: 'west',
title:'MyTitle',
iconCls:'helpIcon',
tools:[{
id: 'gear',
handler: function(){...}
}]
};