我有很多像这样的网格。我想使基本网格和列从另一个js文件加载。 Extjs4有可能吗?
Ext.define('App.view.MyGrid',
{
extend : 'Ext.grid.Panel',
alias : 'widget.resultsList',
id : 'myGrid',
header : false,
columnLines : true,
initComponent : function() {
this.store = 'MyStore';
this.columns = [
// Can this loaded from a another file
]
}
});
答案 0 :(得分:3)
不确定这是否是最好的方法,但你可以使用mixin来做到这一点:
Ext.define('App.mixin.MyGridColumnsMixin',{
getColumns : function() {
return [{}]; //your columns here
}
});
Ext.define('App.view.MyGrid',{
requires : ['App.mixin.MyGridColumnsMixin'],
mixins : ['App.mixin.MyGridColumnsMixin'],
initComponent : function() {
var me = this,
columns = me.getColumns(); //method of the mixin
//applying the list of columns in this component
Ext.applyIf(me, {
columns: columns
});
me.callParent(arguments);
}
});
答案 1 :(得分:1)
完全可行且完全直截了当。
Ext.define('App.view.BaseGrid',{
extend : 'Ext.grid.Panel',
header : false,
columnLines : true,
initComponent : function() {
this.store = 'MyStore';
this.columns = [{text:'fake',dataIndex:'fakeid'}];
this.callParent(arguments);
}
});
//从另一个文件加载
Ext.define('App.view.MyGrid', {
extend : 'App.view.BaseGrid',
alias : 'widget.resultsList',
initComponent : function() {
this.store = 'MyOherStore';
this.columns = [{text:'real',dataIndex:'id'}];
this.callParent(arguments);
}
});