Sencha Touch 1.1.1嵌套JSON存储加载
嗨,伙计们,我希望有人能帮我解决这个问题,我真的被卡住了,虽然这是一个该死的初学者问题,已经得到了回答,我向你们保证我读了所有的答案帖子,但仍然无法让它起作用 我正在使用Sencha Touch 1.1.1,并尝试使用嵌套的JSON数据加载此存储。代码如下:Sencha Touch 1.1.1嵌套JSON存储加载,json,sencha-touch,store,Json,Sencha Touch,Store,嗨,伙计们,我希望有人能帮我解决这个问题,我真的被卡住了,虽然这是一个该死的初学者问题,已经得到了回答,我向你们保证我读了所有的答案帖子,但仍然无法让它起作用 我正在使用Sencha Touch 1.1.1,并尝试使用嵌套的JSON数据加载此存储。代码如下: Ext.regModel("UserData", { hasMany : [{ name : "id", type : "integer", },{
Ext.regModel("UserData", {
hasMany : [{
name : "id",
type : "integer",
},{
name : "username",
type : "string",
},{
name : "password",
type : "string",
}]
});
var userdata =
{"users": [
{
"id": 16,
"username": "bla@bla.com",
"password": "bla",
}, {
"id": 17,
"username": "bla@bla.com",
"password": "bla",
}
]
};
var myStore = new Ext.data.Store({
model : 'UserData',
data : userdata,
proxy : {
type : 'ajax',
reader : {
type : 'json',
root : 'users' // not working
}
}
});
var myList = new Ext.List ({
fullscreen : true,
store : myStore,
grouped : false,
itemTpl : '<div>{username}</div>'
});
我遗漏了什么?如果我没有弄错的话,在您的“UserData”模型中,它应该是
字段
,而不是有许多
然后尝试将json数据放在单独的json文件中,并在商店的代理中找到路径
var myStore = new Ext.data.Store({
model: 'UserData',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'test.json',
reader: {
type: 'json',
root: 'users'
}
}
});
我测试过了,在这里效果很好。这是我的全部代码
Ext.regModel("UserData", {
fields: [
{name: 'id', type:'int'},
{name: 'username', type:'string'},
{name: 'password', type:'string'}
]
});
var myStore = new Ext.data.Store({
model: 'UserData',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'test.json',
reader: {
type: 'json',
root: 'users'
}
}
});
var app = new Ext.Application({
name: 'TestApp',
useLoadMask: true,
launch: function() {
TestApp.views.listToolbar = new Ext.Toolbar({
title: 'Foo Bar',
layout: 'hbox'
});
TestApp.views.list = new Ext.List({
id: 'list',
store: myStore,
emptyText: 'Nothing',
itemTpl: '<div class="username">{username}</div>',
});
TestApp.views.container = new Ext.Panel({
layout: 'fit',
html: 'this is the container',
dockedItems: [TestApp.views.listToolbar],
items: [TestApp.views.list]
});
TestApp.views.viewport = new Ext.Panel({
fullscreen: true,
layout: 'card',
cardAnimation: 'slide',
items: [
TestApp.views.container
]
});
}
});
Ext.regModel(“用户数据”{
字段:[
{name:'id',type:'int'},
{name:'username',type:'string'},
{name:'password',type:'string'}
]
});
var myStore=new Ext.data.Store({
模型:“用户数据”,
自动加载:对,
代理:{
键入:“ajax”,
url:'test.json',
读者:{
键入:“json”,
root:'用户'
}
}
});
var app=新的外部应用程序({
名称:“TestApp”,
useLoadMask:对,
启动:函数(){
TestApp.views.listToolbar=新的外部工具栏({
标题:“富吧”,
布局:“hbox”
});
TestApp.views.list=新的外部列表({
id:'列表',
商店:myStore,
emptyText:'什么都没有',
itemTpl:“{username}”,
});
TestApp.views.container=新的外部面板({
布局:“适合”,
html:“这是容器”,
dockedItems:[TestApp.views.listToolbar],
项目:[TestApp.views.list]
});
TestApp.views.viewport=新的外部面板({
全屏:对,
布局:“卡片”,
cardAnimation:“幻灯片”,
项目:[
TestApp.views.container
]
});
}
});
啊,非常感谢,现在很有魅力。出于好奇,您知道为什么我不能将JSON字符串放入变量并将其传递给存储吗?Sencha数据存储对我来说似乎是一个很大的谜。你可以将JSON字符串放入一个变量中。但是由于您的根用户是users
,所以您的变量应该是var mydata=[{“id”:16,“username”:“blah”,“password”:“spamme1992”},{“id”:17,“username”:“xxx”,“password”:“yyy”}]代码>啊,好的,非常感谢您的帮助。
Ext.regModel("UserData", {
fields: [
{name: 'id', type:'int'},
{name: 'username', type:'string'},
{name: 'password', type:'string'}
]
});
var myStore = new Ext.data.Store({
model: 'UserData',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'test.json',
reader: {
type: 'json',
root: 'users'
}
}
});
var app = new Ext.Application({
name: 'TestApp',
useLoadMask: true,
launch: function() {
TestApp.views.listToolbar = new Ext.Toolbar({
title: 'Foo Bar',
layout: 'hbox'
});
TestApp.views.list = new Ext.List({
id: 'list',
store: myStore,
emptyText: 'Nothing',
itemTpl: '<div class="username">{username}</div>',
});
TestApp.views.container = new Ext.Panel({
layout: 'fit',
html: 'this is the container',
dockedItems: [TestApp.views.listToolbar],
items: [TestApp.views.list]
});
TestApp.views.viewport = new Ext.Panel({
fullscreen: true,
layout: 'card',
cardAnimation: 'slide',
items: [
TestApp.views.container
]
});
}
});