2012-04-20 3 views
0

У меня есть следующий код для всего моего приложения Sencha Touch (для app.js). Я пытаюсь получить его так, что файл JSON загружается в localstorage, а поле имени пользователя отображается в списке на странице «данные».Sencha Touch 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

Если файл samplecustomers.json находится в том же домене, что приложение вам не нужно использовать полный путь.

Но если его на другом домене, вы должны будете использовать JSONP, чтобы принести его: Ext.data.JsonP

Прокси-сервер используется предназначен для таких же домена читает.

+0

Спасибо, просто нужно исправить это, а также добавить NETWORK: * в манифест. Я все еще получаю сообщение «Uncaught SyntaxError: Неожиданный токен:» при попытке загрузить json. хммм. – Calvin

+0

убедитесь, что вы выбрали имя свойства ~ {"key": "value", "numKey": 1} ~ –

Смежные вопросы