如何让ExtJS的form.getValues()忽略子组件,减少表单提交数据量?
解决ExtJS表单提交时忽略指定子组件的问题
你的问题是表单里有个动态生成大量网格的容器,提交时form.getValues()会带出海量无关数据,要让表单完全忽略这个容器及其内部所有元素,直接按下面的方式配置即可:
- 给目标容器添加
submitValue: false,确保容器自身不参与表单提交 - 通过
defaults配置递归给所有子组件设置submitValue: false,覆盖子组件默认的提交行为
修改后的代码示例:
initComponent() { const me = this; Ext.apply(me, { items: [ { xtype: 'container', name: 'BasicIndicatorsContainer', submitValue: false, // 容器自身不提交 defaults: { submitValue: false // 所有子组件都不提交 }, items: [ // controller forms some 32 grids here ] }, // 其他表单组件... ] }); me.callParent(arguments); // 必须调用父类初始化方法,否则组件可能异常 }
补充说明:
- ExtJS中,
submitValue: false是表单组件的核心控制属性,只要设置为false,form.getValues()就会跳过该组件及其值 - 容器默认
submitValue是false,但它的子组件(比如网格内的编辑控件、内嵌表单字段)默认可能为true,所以必须用defaults批量设置,才能彻底忽略整个容器内部的所有元素 - 如果后续需要让容器内某个特定组件参与提交,只需单独给该组件设置
submitValue: true即可覆盖默认配置
内容的提问来源于stack exchange,提问作者jonny
相关产品推荐
相关产品推荐

