我的模特是:
Ext.define('GS.model.user', {
extend: 'Ext.data.Model',
fields: [{
name: 'id',
type: 'string'
}, {
name: 'username',
type: 'string'
}, {
name: 'email',
type: 'string'
}]
});
我的商店代码是:
Ext.define('GS.store.userstore', {
extend: 'Ext.data.Store',
requires: 'GS.model.user',
config: {
model: 'GS.model.user',
autoLoad: true,
// data: [],
proxy: {
type: 'ajax',
url: '/app/mydata.json',
reader: {
type: 'json',
root: 'users'
}
}
},
listeners: {
load: function(store) {
alert(store.getCount());
console.log(store.getAt[0]);
}
}
});
查看代码:
Ext.define('GS.view.userlist', {
extend: 'Ext.form.Panel',
xtype: 'userpanel',
requires: ['GS.store.userstore', 'Ext.form.Panel'],
config: {
itemTpl: '{store.get("id"),{sotre.get("username")},{store.get("email")}',
store: 'userstore'
}
});
Json数据:
[{
"users": [{
"id": "1001",
"username": "user1",
"email": "abc@unisys.com"
}, {
"id": "1002",
"username": "user2",
"email": "abcd@unisys.com"
}, {
"id": "1003",
"username": "user3",
"email": "abce@unisys.com"
}, {
"id": "1004",
"username": "user4",
"email": "abcf@unisys.com"
}]
}]
在谷歌杂务中运行后,我收到了错误:
OPTIONS file:///D:/app/mydata.json?_dc=1334569840508&page=1&start=0&limit=25
资源无法加载。
请告诉我怎么可能? 我如何检索json数据值并将其填充为列表。 帮助我。
答案 0 :(得分:2)
在网址中使用localhost
来运行您的应用
例如:
http://localhost/your_app
答案 1 :(得分:1)
您的json数据似乎不对。
"用户"不应该在所有" id"之间的引号和引号之间。和"用户名"和"电子邮件"陈述:
Json数据:
{
users:
[
{ id: "1001", username: "user1" , email:"abc@unisys.com"},
{ id: "1002", username: "user2" , email:"abcd@unisys.com"},
{ id: "1003", username: "user3" , email:"abce@unisys.com"},
{ id: "1004", username: "user4" , email:"abcf@unisys.com"}
]
}
答案 2 :(得分:1)
路径错了吗?对我来说,它甚至找不到文件。
proxy: {
type: 'ajax',
url : 'app/mydata.json', // CHANGE THIS TO 'app/mydata.json'
reader: {
type: 'json',
root: 'users'
}} },
我把你的json放到了jsonlint.org并且它通过了,所以我认为这不是问题所在。根据错误,我不认为你的道路是正确的。如果我上面发布的内容不起作用,我会将mydata.json复制到index.html所在的根文件夹中,并将代理URL配置为url:'mydata.json',
答案 3 :(得分:1)
您的代码存在两个问题:
您的JSON有效,但JSON阅读器无法读取它,因为它是一个数组。如果您删除[
和]
,则可以使用
{
"users": [
{
"id": "1001",
"username": "user1",
"email": "abc@unisys.com"
},
...
]
}
在您的阅读器中,您需要使用rootProperty
- 而不是root
:
reader: {
type: 'json',
rootProperty: 'users'
}
在您的itemTpl
中,您可以使用{fieldName}
直接访问字段 - 您无需使用store.get('xxx')
:
itemTpl: '{username}, {email}'
文件未加载;我不确定。尝试使用其他浏览器,如果仍然无效,请再次检查该文件是否存在。
答案 4 :(得分:0)
在某个位置托管json文件,该文件应该可以通过http.i.e访问。将文件放在本地计算机上运行的任何服务器上,并在商店代理的url部分中提供URL。