2017-06-14 36 views
0

设置模型字段的值,我有以下型号:适当的方式在EXT JS

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保存()或同步()调用存储包含这种情况下,我得到:

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

代替:

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

所以我的问题是,在这个JSON “数据” 的实体。我相信他与我在区域实例中设置字段值的方式有关。我认为这是错误的吗?如果不是,那么设置这些字段的正确方法是什么?

谢谢你的时间。

+0

你的问题与清晰完全相反。如何/为什么在“加载”操作期间序列化数据 - ExtJS只在'load'期间反序列化,并在'sync'期间序列化。 – Alexander

+0

也就是说,官方的ExtJS文档并没有显示''setterName''或'getterName'配置存在于'Ext.data.field.Field'上。 – Alexander

+0

我的意思是加载/保存操作来序列化/反序列化。我会更新问题 –

回答

0

我不是这方面的专家,但我希望这种联系将有助于
http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.data.Field.html

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

area.set('width', someWidthValue); 
area.get('width'); 
如果你想使用诸如setWidth你可以定义则如上面的链接的制定者