所以,我正在制作登录表格。
Sencha期望任何Json响应通常具有以下格式:
{
"root" : {
"success": true/false,
"message": ...,
"id": ...,
"metaData": ...,
}
}
然而,我得到的实际Json Response看起来像这样:
{
"SessionId":"1", //doesn't exist if login error
"UserName":"admin", //doesn't exist if login error
"ResponseStatus":{
//blank or failed to login error list
}
}
格式来自第三方,所以我无法改变它。由于结构不同,映射这些文件并不简单。
我的直觉告诉我,我应该在Ext.Form中编写自定义json数据转换 - > Reader / errorReader - >功能。但是,我是ExtJS的新手,我没有脑汁将它粘在一起。你能帮忙吗?
答案 0 :(得分:1)
这可以做到,你需要创建自己的Reader。在这篇文章中有这样的回答:
how to configure extjs reader to read this json?
Ext.define('Ext.data.reader.JsonPWithoutRoot', {
extend: 'Ext.data.reader.Json',
read: function(response) {
return this.callParent([ { root: response } ]);
},
root: 'root'
});
您的商店代理配置:
proxy: {
type : 'json',
reader : {
type: 'json',
root: ''
}
}
答案 1 :(得分:1)
根据Johan,您不需要自定义阅读器。
如果您的json没有root,那么不要告诉读者使用root ...
Ext.define('My.model.Model1', {
extend:'Ext.data.Model',
fields:[
'SessionId',
'UserName'
],
proxy:{
type:'ajax',
url:'./app/data/response.json',
reader:{
type:'json',
messageProperty:'ResponseStatus'
}
}
});