2017-06-14 30 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你可以定義則如上面的鏈接的制定者