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
相关产品推荐
相关产品推荐

