如何使用不同的名称从模型映射到字段

How to map from model to field using a different name

本文关键字:模型 映射 字段 何使用      更新时间:2023-09-26

我有一个模型,它有一个带有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'在代理的作家,我不确定这是否是我要找的,因为我还没有设法使它工作(我认为作家是发送数据回服务器)。
我能在别的地方指定nameProperty吗?我走的路对吗?有其他的解决方案吗?

非常感谢。

您可以在模型中创建一个新的 computed 属性:

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'
}]

Then in model:

Ext.define('Customer', {
  extend: 'Ext.data.Model',
  fields: [{
    name: 'firstName',
    mapping: 'first_name'
  }, {
    name: 'lastName',
    mapping: 'last_name'
  }],
});