ExtJS:如何为 initComponent 中的网格列设置默认值?

ExtJS: How to set defaults for Grid columns within initComponent?

正如您在下面注意到的,我正在使用 Ext.Array.mergeinitComponent 中呈现 columns

我尝试将 columns' flex 属性 设置为 initComponent 中的默认值。 我怎样才能实现这种安排?

initComponent: function () {
        var me = this;
        Ext.on('resize', function () { me.height = window.innerHeight - App.MAIN_FOOTER_HEIGHT - App.MAIN_HEADER_HEIGHT - 100 });

        me.createGridMenu();

        me.columns = Ext.Array.merge(me.getListColsStart(), me.getListCols(), me.getListColsEnd());

        //I need to set through here. Any solution such as setDefaults or dot notation to fetch defaults of columns?

        me.callParent(arguments);
    },

这里是重写函数之一

getListCols: function () {
        return [];
    },

更新: 相关的第二个问题移至 post。仅供参考。

这是 API 文档的摘录,来自 columns documentation(它还包含与您的问题相关的示例):

This can also be a configuration object for a Ext.grid.header.Container which may override certain default configurations if necessary. For example, the special layout may be overridden to use a simpler layout, or one can set default values shared by all columns:

因此,在您的情况下,您可以通过以下方式将 flex 设置为所有列的默认配置:

me.columns = {
    items: Ext.Array.merge(
        me.getListColsStart(),
        me.getListCols(),
        me.getListColsEnd()
    ),
    defaults: {
        flex: 1
    }
}

编辑 如果 flex 属性 必须仅应用于列的子集,实现此目的的一种方法是对所需的子集应用数组 map 函数:

me.columns = Ext.Array.merge(
    me.getListColsStart(),
    Ext.Array.map(me.getListCols(), function(listColConfig) {
        listColConfig.flex = 1;
        return listColConfig;
    }),
    me.getListColsEnd()
)