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版本?