从不同的文件extj加载列

时间:2013-10-07 17:03:04

标签: javascript extjs grid

我有很多像这样的网格。我想使基本网格和列从另一个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
    ]
  }
});

2 个答案:

答案 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);
     }
});