如您在下面看到的,我正在使用Ext.Array.merge
来渲染columns
中的initComponent
。
我尝试将columns
的{{1}}'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);
},
更新: 相关的第二个问题移至Setting defaults to panel items for nested objects帖子中。仅供参考。
答案 0 :(得分:1)
以下是API文档,columns
documentation的摘录(还包含与您的问题相关的示例):
这也可以是 Ext.grid.header.Container可能会覆盖某些默认值 必要时进行配置。例如,特殊布局可能是 覆盖以使用更简单的布局,或者可以设置默认值 由所有列共享:
因此,就您而言,这是将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()
)