我有一个具有name属性的字段的模型,例如:
fields: [{
name: 'first',
type: 'string'
}]
现在我有一个显示字段来显示模型中的这个字段,但是我不能像模型中那样命名它,它看起来像这样:
{
xtype: 'displayfield',
name: 'first'
}
相反,我需要将字段命名为下面显示的内容(与模型中给出的名称不同)
{
xtype: 'displayfield',
name: 'firstName'
}
现在我的问题是,如何在模型中保留名称并为字段使用不同的名称?
我做了一些研究,发现了Ext.data.field中的'mapping'属性:
fields: [{
name: 'first',
type: 'string',
mapping: 'firstName'
}]
但你需要给nameProperty配置值'mapping'in the writer of the proxy,我不确定这是否是我正在寻找的,因为我还没有设法让它工作(而且我认为作者是将数据发送回服务器。) 那么,我可以在其他地方指定nameProperty吗?我在正确的道路上吗?还有其他解决方案吗?
非常感谢你。
答案 0 :(得分:1)
您可以在模型中创建新的计算属性:
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'
}],
});