我正在使用Ext JS 4.1.1为网页创建GUI。我试图创建一个组件(下面的' GeneSearchComponent '),我可以在更复杂的布局中使用它。但由于某些原因,我无法在 hpanel 中插入“ GeneSearchComponent ”的实例。扩展预定义的' Ext.panel.Panel '类(以及创建自己的“小部件”)时我缺少什么?
如果我删除了对“Ext.create('gene-search-component', ...
”的调用,那么一切正常;如果我把它放回去,一切都会破裂。我想知道为什么。
(我没有包括'gene-combobox'的定义。我相信这不是我问题的根本原因。)
谢谢你的时间!
图奥马斯
Ext.define('GeneSearchComponent', {
extend: 'Ext.panel.Panel',
alias: ['gene-search-component'],
constructor: function(cnfg) {
this.callParent(arguments);
this.initConfig(cnfg);
},
config: {
collapsible: true,
frame: true,
title: 'Search',
bodyPadding: '15 15 15 15',
width: 350,
layout: {
type: 'vbox',
align: 'left'
},
items: [
Ext.widget('gene-combobox', {
id: 'comboboxid'
}),
Ext.create('Ext.Button', {
text: 'Search',
handler: function() {
dosomething();
}})]
},
onRender: function() {
this.callParent(arguments);
}
});
Ext.application({
name: 'FW',
launch: function() {
var bd = Ext.getBody();
var div = Ext.get("search_form");
var hpanel = Ext.create('Ext.panel.Panel', {
id: 'horizontal-panel',
title: "HBoxLayout Panel",
layout: {
type: 'hbox',
align: 'middle'
},
items: [
Ext.create('Ext.container.Container', {
id: 'another-panel',
title: "VBoxLayout Panel",
width: 250,
layout: {
type: 'vbox',
align: 'left'
},
items: [{
xtype: 'panel',
width: 250,
title: ' Panel One',
flex: 2
},{
xtype: 'panel',
width: 250,
title: ' Panel Two',
flex: 1
},{
xtype: 'panel',
width: 250,
title: ' Panel Three',
flex: 1
}]}),
Ext.create('gene-search-component', {
id: 'searchPanel',
})],
renderTo: div,
});
}
});
答案 0 :(得分:1)
问题是您在配置别名时没有给gene-search-component
widget
命名空间。
alias: 'widget.gene-search-component'
另外,为了回应您对OP的评论,您正在进行大量不必要的打字,以您的方式创建组件。你应该使用xtype字段而不是在任何地方使用Ext.Create。我修改了你的代码,告诉你它有多简单。