Javascript 在EXT JS中设置模型字段值的正确方法

Javascript 在EXT JS中设置模型字段值的正确方法,javascript,json,extjs,Javascript,Json,Extjs,我有以下型号: Ext.define('my.workspace.Area', { extend: 'Ext.data.Model', idProperty: 'id', fields: [ {name: 'id', type: 'string'}, {name: 'width', type: 'int',getterName:'getWidth',setterName:'setWidth'}, {name: 'height

我有以下型号:

Ext.define('my.workspace.Area', {
    extend: 'Ext.data.Model',
    idProperty: 'id',
    fields: [
        {name: 'id', type: 'string'},
        {name: 'width', type: 'int',getterName:'getWidth',setterName:'setWidth'},
        {name: 'height', type: 'int',getterName:'getHeight',setterName:'setHeight'}
    ]
});
如果我实例化这个模型,我们可以这样说:

var area = Ext.create('my.workspace.Area');
area.set('width', someWidthValue);
area.set('height', someHeightValue);
我无法使用setters setWidth和setHeight设置此实例的值。但是,我可以这样做:

var area = Ext.create('my.workspace.Area');
area.set('width', someWidthValue);
area.set('height', someHeightValue);
我的问题是,当通过save()或sync()调用将此对象序列化为json以存储包含此实例时,我得到:

...
"area": {
      "data": {
        "id": "someId",
        "width": 260,
        "height": 502
      },
...
而不是:

...
"area": {
        "id": "someId",
        "width": 260,
        "height": 502
},
...
所以我的问题是这个json中的“数据”实体。我相信他与我在area实例中设置字段值的方式有关。我这么想是不是错了?如果没有,设置这些字段的正确方法是什么


谢谢您的时间。

我不是这方面的专家,但我希望此链接能有所帮助


据我所知,[data]是您正在扩展的[Ext.data.Model]结构的一部分。
可通过[数据]访问这些字段。

area.set('width', someWidthValue);
area.get('width');

如果要使用setWidth等设置器,您可以按照上面的链接进行定义。

您的问题与clear完全相反。如何/为什么在“加载”操作期间序列化数据-ExtJS仅在
load
期间反序列化,而在
sync
期间序列化,官方的ExtJS文档根本没有显示
Ext.data.field.field
上存在
setterName
getterName
配置。我的意思是加载/保存操作以进行序列化/反序列化。我会更新这个问题,你能做一个测试吗?你使用哪个ExtJs版本?