【发布时间】:2018-12-12 18:02:53
【问题描述】:
这个问题是How to set defaults for Grid columns within initComponent 的一部分,并通过@scebotari66 在主帖上的建议独立发布在这里。
正如您将在下面注意到的那样;有Ext.Array.map 为相关功能定义defaults。
// Statment
initComponent: function () {
var me = this;
me.items = Ext.Array.merge(
me.getFormSt(),
Ext.Array.map(me.getForm(), function (listFldConfig) { //Aim to using the array map function to set flex property for subset fields
listFldConfig.flex = 1;
return listFldConfig;
}),
me.getFormEnd()
);
me.callParent(arguments)
},
// Implementation
getForm: function () {
var me = this;
var form = [
{ // Array.map func. sets `flex` to this obj.
xtype: 'fieldcontainer',
layout: { type: 'vbox', align: 'stretch', pack: 'start' },
items: [
{
xtype: 'fieldcontainer',
layout: 'hbox',
items: [
{
xtype: 'foofield',
//flex: 1 //But I need to set `flex` as default for this obj. in nested items array
},
{
xtype: 'barfield',
//flex: 1 //But I need to set `flex` as default for this obj. in nested items array
}
问题是这个实现按预期工作,但在这种情况下,我正在创建一个 fieldcontainer 对象,其中包含所有其他事物和项目。而Array.map 仅将flex 配置设置为第一个fieldcontainer obj。我只需要为嵌套的items 定义flex 配置,它具有foofield 和barfield。
【问题讨论】:
-
不使用
map函数,你可以直接defaults:{flex:1}为包含foofield和barfield的内部fieldcontainer配置。 -
但我正在创建大量这种嵌套的
fieldcontainers 和items。因此试图避免 DRY 并找出其他有用的方法。 -
所以有一种更有用的方法可以创建自定义组件,并且使用一次会更容易
-
亲爱的@NarendraJadhav 就是这样!即使我已经正式发布了 Sencha SDK;
Ext.form.FieldContainer不在 SDK 源代码中!?这是为什么?我已经声明了extend: 'Ext.form.FieldContainer',但找不到声明并抛出错误;[ERR] Failed to resolve dependency Ext.form.FieldContainer for file -
您使用的是哪个版本的 extjs?
标签: javascript arrays object extjs defaults