如何使用不同的名称从模型映射到字段
How to map from model to field using a different name
我有一个模型,它有一个名称为 属性 的字段,例如:
fields: [{
name: 'first',
type: 'string'
}]
现在我有一个显示字段来显示模型中的这个字段,但我不能将其命名为与模型中相同的名称,它看起来像这样:
{
xtype: 'displayfield',
name: 'first'
}
相反,我需要将该字段命名为如下所示的名称(与模型中给出的名称不同)
{
xtype: 'displayfield',
name: 'firstName'
}
现在我的问题是,如何才能将名称保留在模型中并为字段使用不同的名称?
我做了一些研究,发现 'mapping' 属性 在 Ext.data.field:
fields: [{
name: 'first',
type: 'string',
mapping: 'firstName'
}]
但是你需要给 nameProperty 配置值 'mapping' in the writer of the proxy,我不确定这是否是我要找的,因为我还没有成功工作(我认为作者是为了将数据发送回服务器)。
那么,我可以在其他地方指定 nameProperty 吗?我在正确的道路上吗?还有其他解决方案吗?
非常感谢。
您可以在您的模型中创建一个新的计算属性:
Ext.define('Customer', {
extend: 'Ext.data.Model',
fields: [{
name: 'firstName',
calculate: function() {
return this.get('first');
}
}],
});
注意此代码对 ExtJS 版本 5 及更高版本有效。
使用mapping
属性
如果您需要从服务器接收不同名称的字段,您可以使用mapping
属性。例如,如果您从服务器收到以下 JSON:
[{
first_name: 'Dimitri',
last_name: 'Kurashvili'
}]
然后在模型中:
Ext.define('Customer', {
extend: 'Ext.data.Model',
fields: [{
name: 'firstName',
mapping: 'first_name'
}, {
name: 'lastName',
mapping: 'last_name'
}],
});
我有一个模型,它有一个名称为 属性 的字段,例如:
fields: [{
name: 'first',
type: 'string'
}]
现在我有一个显示字段来显示模型中的这个字段,但我不能将其命名为与模型中相同的名称,它看起来像这样:
{
xtype: 'displayfield',
name: 'first'
}
相反,我需要将该字段命名为如下所示的名称(与模型中给出的名称不同)
{
xtype: 'displayfield',
name: 'firstName'
}
现在我的问题是,如何才能将名称保留在模型中并为字段使用不同的名称?
我做了一些研究,发现 'mapping' 属性 在 Ext.data.field:
fields: [{
name: 'first',
type: 'string',
mapping: 'firstName'
}]
但是你需要给 nameProperty 配置值 'mapping' in the writer of the proxy,我不确定这是否是我要找的,因为我还没有成功工作(我认为作者是为了将数据发送回服务器)。
那么,我可以在其他地方指定 nameProperty 吗?我在正确的道路上吗?还有其他解决方案吗?
非常感谢。
您可以在您的模型中创建一个新的计算属性:
Ext.define('Customer', {
extend: 'Ext.data.Model',
fields: [{
name: 'firstName',
calculate: function() {
return this.get('first');
}
}],
});
注意此代码对 ExtJS 版本 5 及更高版本有效。
使用mapping
属性
如果您需要从服务器接收不同名称的字段,您可以使用mapping
属性。例如,如果您从服务器收到以下 JSON:
[{
first_name: 'Dimitri',
last_name: 'Kurashvili'
}]
然后在模型中:
Ext.define('Customer', {
extend: 'Ext.data.Model',
fields: [{
name: 'firstName',
mapping: 'first_name'
}, {
name: 'lastName',
mapping: 'last_name'
}],
});