2013-10-07 58 views
1

我有很多像這樣的網格。我想讓基礎網格和列從另一個js文件加載。在Extjs4中可能嗎?從不同的文件加載列extjs

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 
    ] 
    } 
}); 

回答

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

它完全可行的,完全直線前進。

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