无法使用Sencha Touch中的JsonReader在JsonStore中映射模型

时间:2011-10-05 00:36:46

标签: mapping sencha-touch jsonstore jsonreader

我在使用Ext.data.JsonReader映射Ext.data.JsonStore模型时遇到了sencha的问题。

来自服务器的Json响应(服务器模型):

{"rows":[{"id":1,"firstname":"Bill"},{"id": 2,"firstname":"Ben"}]}

Json Store中使用的模型:

Ext.regModel( 'mycabinet', {
fields: [ 
{ name : 'DeviceId', type: 'int' },
'CabinetName']
});

json读者代码:

var iccDeviceReader = new Ext.data.JsonReader({
// metadata configuration options:
idProperty: 'id',
root: 'rows',
fields: [
{name: 'CabinetName', mapping: 'firstname'},
{name:'DeviceId',mapping:'id'}
]
});

json商店代码:

app.iccDS = new Ext.data.JsonStore( {
model : 'mycabinet',
sorters  : 'CabinetName',
getGroupString : function(record) { return record.get('CabinetName')[0]; },
proxy    : {
type: 'ajax',
url : '/icc/js/data.js',
reader:iccDeviceReader
},
autoLoad: true
} );

我期待“mycabinet”模型将填充“服务器模型”。但是,映射不会发生。 我甚至尝试使用转换没有任何成功(名称:'DeviceId',映射:'id',转换:function(v){return v.id;})

任何帮助都将受到高度赞赏。 感谢

2 个答案:

答案 0 :(得分:0)

从Reader中删除“fields”选项,并在模型配置中将'CabinetName'更改为 {name:'CabinetName',映射:'firstname'} 。 此外, idProperty 也应该进入您的模型配置。

答案 1 :(得分:0)

以下代码解决了我的问题...

Ext.regModel( 'mycabinet', {
fields: [ 
{ name : 'DeviceId', type: 'int',mapping:'id' },
{name: 'CabinetName', mapping: 'firstname'}]
});

app.iccDS = new Ext.data.JsonStore( {
model : 'mycabinet',
sorters  : 'CabinetName',
getGroupString : function(record) { return record.get('CabinetName')[0]; },
proxy    : {
type: 'ajax',
url : '/icc/js/data.js'
},
autoLoad: true
} );

我不再使用jsonReader了。