我们可以避免在模型中设置额外的字段吗?
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 中处理会更好。
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 中处理会更好。