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", },{

嗨,伙计们,我希望有人能帮我解决这个问题,我真的被卡住了,虽然这是一个该死的初学者问题,已经得到了回答,我向你们保证我读了所有的答案帖子,但仍然无法让它起作用

我正在使用Sencha Touch 1.1.1,并尝试使用嵌套的JSON数据加载此存储。代码如下:

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