ExtJS:如何为 initComponent 中的网格列设置默认值?
ExtJS: How to set defaults for Grid columns within initComponent?
正如您在下面注意到的,我正在使用 Ext.Array.merge
在 initComponent
中呈现 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()
)
正如您在下面注意到的,我正在使用 Ext.Array.merge
在 initComponent
中呈现 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 [];
},
更新:
相关的第二个问题移至
这是 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()
)