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

发布于 2024-12-08 14:19:27 字数 1030 浏览 0 评论 0原文

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

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

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

Json 存储中使用的模型:

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',转换:函数(v){return v.id;})

任何帮助将不胜感激。 谢谢

I am facing a problem in sencha while mapping Ext.data.JsonStore model using Ext.data.JsonReader.

Json response from server (server model):

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

Model used in Json Store:

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

json Reader code:

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

json store code:

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
} );

I am expecting that "mycabinet" model will get populated with "server model". However, mapping doesnt occur.
I even tried using convert without any success(name:'DeviceId',mapping:'id',convert: function(v){return v.id;})

Any help will be highly appreciated.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

非要怀念 2024-12-15 14:19:27

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

Remove the "fields" option from your Reader and change 'CabinetName' to {name: 'CabinetName', mapping: 'firstname'} in your model config.
Also, idProperty should also go into your model config.

几度春秋 2024-12-15 14:19:27

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

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 了。

Following code solved my problem...

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
} );

I am not using jsonReader anymore.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文