我们可以避免在模型中设置额外的字段吗?

Can we avoid setting additional fields in Model?

Ext.define('User', {
  extend: 'Ext.data.Model',
  fields: [
    {name: 'name',  type: 'string'}
  ]
});
Ext.create('User', { 'name' : 'A', 'createdBy': 'Random' });

EXTJS 4.1 在创建记录时忽略 'createdBy' 字段。 在 7.4 中,它也会保存额外的(未配置的)字段。

7.4 中的输出

{
  "name": "A",
  "createdBy: "Random"
}

我们可以通过任何配置避免这种情况(记录数据中有 'createdBy')吗?

翻了很多版本的Release Notes,我发现了这个。

Migration Guide - EXTJS 4.2 to 5.0

它提到以下覆盖,这将恢复记录创建的行为。

Ext.define('App.overrides.data.Model', {
    override: 'Ext.data.Model',
    constructor: function (data) {
        this.raw = Ext.apply({}, data);
        this.callParent(arguments);
    }
});

我对动态字段创建没有问题,但如果他们将其作为可配置行为引入或提供类似的字段映射以在 writer 中处理会更好。