Sencha Touch JSON加载到localstorage无法正常工作?

时间:2012-04-20 00:08:06

标签: javascript json sencha-touch local-storage

我的整个Sencha Touch App(适用于app.js)有以下代码。我试图得到它,以便将JSON文件加载到localstorage中,用户名字段显示在“数据”页面的列表中。

任何有关出错的提示?应用程序本身加载正常,但JSON没有加载到localstorage或显示任何内容。

var helloWorld = new Ext.Application({

Users: Ext.regModel('Users', {
    fields:[
        {name:'id'},
        {name:'username'},
        {name:'password'},
    ]
}),

onlineStore: new Ext.data.Store({
    model: 'Users',
    proxy: {
        type: 'scripttag',
        url: 'http://selectout.net/manage/oil/www/samplecustomers.json',
        reader: new Ext.data.JsonReader({
            root: 'users'
        }),
        timeout: 2000,
        listeners: {
            exception:function () {
                console.log("I think we are offline");
                helloWorld.Users.bindStore(helloWorld.offlineStore);
                helloWorld.offlineStore.load();
            }
        }
    }
}),

offlineStore: new Ext.data.Store({
    model: 'Users',
    proxy: {
        type: 'localstorage',
        id: 'helloworld'
    }
}),

launch: function() {
    this.tabs = new Ext.TabPanel({
        fullscreen: true,
        dockedItems: [{xtype:'toolbar', title:'Hello World'}],
        tabBar: {
            ui: 'dark',
            layout: {
                pack: 'center'
            }
        },
        items: [
            {cls:'hello', title:'Hello'},
            {cls:'world', title:'World'},
            {
                cls: 'Users',
                title: 'Users',
                xtype: 'list',
                store: null,
                itemTpl:'{username}'
            }
        ]
    });
    this.Users = this.tabs.items.getAt(2);

    this.onlineStore.addListener('load', function () {
        console.log("I think we are online");
        helloWorld.offlineStore.proxy.clear();
        helloWorld.offlineStore.sync();
        helloWorld.Users.bindStore(helloWorld.offlineStore);
    });
    this.onlineStore.load();
}

});

1 个答案:

答案 0 :(得分:1)

如果文件samplecustomers.json与您的应用位于同一个域中,则无需使用完整路径。

但是如果它在不同的域上,您将不得不使用JSONP来获取它:Ext.data.JsonP

您使用的代理设计用于相同的域读取。