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

时间:2017-06-14 19:01:18

标签: 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', type: 'int',getterName:'getHeight',setterName:'setHeight'}
    ]
});

如果我实例化这个模型,让我们这样说:

var area = Ext.create('my.workspace.Area');

我无法使用setter setWidth和setHeight为此实例设置值。但是我能够这样做:

area.set('width', someWidthValue);
area.set('height', someHeightValue);

我的问题是,当这个对象被seralized到json时,通过save()或sync()调用来存储包含这个实例,我得到:

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

而不是:

...
"area": {
        "id": "someId",
        "width": 260,
        "height": 502
},
...

所以我的问题是"数据"这个json的实体。我相信他与我在区域实例中设置字段值的方式有关。我错了这个假设吗?如果没有,设置这些字段的正确方法是什么?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

我不是这方面的专家,但我希望这个链接能有所帮助 http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.data.Field.html

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

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

如果你想使用setWidth之类的setter,你可以定义,如上面的链接所示。