ComboStore 未加载数据
ComboStore is not loading the data
我用我给出的配置创建了一个组合框。
displayField: 'TEXT',
valueField: 'ID',
这是我的商店
this.store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: 'combodata.json',
actionMethods: {
read: 'GET'
},
reader: new Ext.data.JsonReader({
rootProperty: 'ROOT.TAG'
})
}),
fields: [
{name: 'ID', mapping: 'ID', type: 'string'},
{name: 'TEXT', mapping: 'TEXT', type: 'string'}
],
autoLoad: true
});
这是我的 JSON
{
"ROOT": {
"TAG": [{
"ID": 01,
"TEXT": "ABC"
},
{
"ID": 02,
"TEXT": "DEF"
},
{
"ID": 03,
"TEXT": "GHI"
}]
}
}
我可以看到 URL 正在响应,但数据未加载到组合框中。甚至数据也不会自行存储。任何人都可以帮助我为什么数据没有以组合方式加载。
更新:
this.store = new Ext.data.Store({
autoLoad: true,
fields: [
{name: 'ID', mapping: 'ID', type: 'string'},
{name: 'TEXT', mapping: 'TEXT', type: 'string'}
],
proxy: new Ext.data.HttpProxy({
url: 'adata.json',//this.url,
headers: {
'Accept': 'application/json; charset=utf-8'
},
actionMethods: {
read: 'GET'
},
reader: new Ext.data.JsonReader({
root: 'ROOT'
})
})
});
你的标签表明你使用的是 ExtJs 3.4。 rootProperty
在该版本中不可用。请改用 root
。
另外,我不认为 ExtJs 3.4 已经允许指定像 root: 'ROOT.TAG'
这样的嵌套根,这可能是不可能的,您必须更改返回的 JSON 的格式或升级到更新版本的 ExtJs。
尝试将此格式与 root: 'ROOT'
一起使用:
{
"ROOT": [{
"ID": 01,
"TEXT": "ABC"
},
{
"ID": 02,
"TEXT": "DEF"
},
{
"ID": 03,
"TEXT": "GHI"
}]
}
I made this fiddle,我正在从 JSON 文件加载组合。
请注意 Assets
文件夹中有商店加载的 JSON 文件 data.json
。
正如洛伦兹评论的那样,有必要做一些修改,看看,希望能帮到你!
我用我给出的配置创建了一个组合框。
displayField: 'TEXT',
valueField: 'ID',
这是我的商店
this.store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: 'combodata.json',
actionMethods: {
read: 'GET'
},
reader: new Ext.data.JsonReader({
rootProperty: 'ROOT.TAG'
})
}),
fields: [
{name: 'ID', mapping: 'ID', type: 'string'},
{name: 'TEXT', mapping: 'TEXT', type: 'string'}
],
autoLoad: true
});
这是我的 JSON
{
"ROOT": {
"TAG": [{
"ID": 01,
"TEXT": "ABC"
},
{
"ID": 02,
"TEXT": "DEF"
},
{
"ID": 03,
"TEXT": "GHI"
}]
}
}
我可以看到 URL 正在响应,但数据未加载到组合框中。甚至数据也不会自行存储。任何人都可以帮助我为什么数据没有以组合方式加载。 更新:
this.store = new Ext.data.Store({
autoLoad: true,
fields: [
{name: 'ID', mapping: 'ID', type: 'string'},
{name: 'TEXT', mapping: 'TEXT', type: 'string'}
],
proxy: new Ext.data.HttpProxy({
url: 'adata.json',//this.url,
headers: {
'Accept': 'application/json; charset=utf-8'
},
actionMethods: {
read: 'GET'
},
reader: new Ext.data.JsonReader({
root: 'ROOT'
})
})
});
你的标签表明你使用的是 ExtJs 3.4。 rootProperty
在该版本中不可用。请改用 root
。
另外,我不认为 ExtJs 3.4 已经允许指定像 root: 'ROOT.TAG'
这样的嵌套根,这可能是不可能的,您必须更改返回的 JSON 的格式或升级到更新版本的 ExtJs。
尝试将此格式与 root: 'ROOT'
一起使用:
{
"ROOT": [{
"ID": 01,
"TEXT": "ABC"
},
{
"ID": 02,
"TEXT": "DEF"
},
{
"ID": 03,
"TEXT": "GHI"
}]
}
I made this fiddle,我正在从 JSON 文件加载组合。
请注意 Assets
文件夹中有商店加载的 JSON 文件 data.json
。
正如洛伦兹评论的那样,有必要做一些修改,看看,希望能帮到你!