You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS能否通过配置让Model不存储未在fields中声明的额外字段?

解决方法

给Ext.data.Model添加strict: true配置项即可实现需求,开启后会自动忽略所有未在fields数组中预先声明的字段,和ExtJS 4.1的默认行为一致。
修改后的示例代码如下:

Ext.define('User', {
  extend: 'Ext.data.Model',
  strict: true, // 新增该配置
  fields: [
    {name: 'name',  type: 'string'}
  ]
});
// 此时未声明的createdBy字段会被静默忽略,不会存入Model实例数据
Ext.create('User', { 'name' : 'A', 'createdBy': 'Random' });

如果需要全局生效,不需要每个Model单独配置,可以覆盖全局默认配置:

Ext.override(Ext.data.Model, {
  strict: true
});

补充说明

  • 该配置从ExtJS 5版本开始正式支持,7.4版本可正常使用
  • 开启配置后不会对未声明字段抛出异常,仅做静默丢弃处理
  • 该配置对Ext.data.Reader读取的接口返回数据同样生效,未声明的接口返回字段也不会被存入Model实例

内容的提问来源于stack exchange,提问作者Devendra Haldankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:15:01