Импорт данных в хранилище Sencha Touch из файла JSON
Импорт данных из файла JSON в хранилище
Я начал разработку приложения, в котором я использую Sencha Touch для дизайна внешнего интерфейса и Java для запросов к базе данных на внутреннем интерфейсе. Тем не менее, у меня возникли проблемы при интеграции двух вместе. Я попытался вернуть данные из java-запроса в файл.json в формате json, а затем загрузить их в свое приложение через магазин, но, похоже, он не работает. Я получаю сообщение об ошибке в консоли Chrome, как показано ниже.
ОПЦИИ localhost:8080/ProficyAppData/WebContent/app/store/info.json?_Dc=1342618907990&page=1&start=0&limit=25 Не удалось загрузить ресурс
Мой проект содержится в веб-проекте Java Eclipse, чтобы я мог легко использовать сервер localhost. Я не уверен, почему данные JSON не загружаются в хранилище.
Хранить:
Ext.define('MyApp.store.Questions', {
extend: 'Ext.data.Store',
config: {
autoLoad: true,
model: 'MyApp.model.Question',
proxy: {
type: 'ajax',
url: 'localhost:8080/ProficyAppData/WebContent/app/store/info.json',
reader: 'json'
},
listeners: {
load: function() {
console.log(this);
}
},
}
});
Модель:
Ext.define('MyApp.model.Question', {
extend: 'Ext.data.Model',
config: {
fields: ['id', 'criteria', 'description', 'questionName', 'type']
}
});
info.json:
[
{
"id": 1,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
},
{
"id": 2,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
},
{
"id": 3,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
},
{
"id": 4,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
},
{
"id": 5,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
},
{
"id": 6,
"criteria": "no criteria yet",
"description": "no description yet",
"questionName": "no question yet",
"type": "n/a"
}
]
[1]: https://stackru.com/images/9cbd2551df1b6c1128026f95cf908b6615111e37.png
2 ответа
У меня есть аналогичный пример, который я придумал, какой вид соответствует вашему вопросу... посмотрите
модель:
Ext.define('MyApp.model.user',{
extend: 'Ext.data.Model',
config: {
identifier:{
type:'uuid'
},
fields: [
{
name:'id',
type:'string'
},
{
name: 'name',
type:'string'
},
{
name: 'mobile',
type:'number'
},
{
name: 'birthday',
type:'date'
},
{
name: 'email',
type:'email'
},
{
name: 'password',
type:'password'
},
{
name:'haveid',
type:'boolean'
},
{
name:'photo'
}
],
}});
хранить:
Ext.define('MyApp.store.UserStore',{
extend:'Ext.data.Store',
config: {
model: 'MyApp.model.user',
storeId: 'userstore',
autoload:true,
proxy: {
type: 'ajax',
id: 'userstoreproxy',
url:'./resources/json/user.json',
method:'POST',
// .../RESOURCES/JSON/USER.JSON
reader:
{
type:'json',
rootProperty:'form.fields'
}
}
}});
Слушатель будет добавлен в представление:
listeners:{
painted:function()
{
var store=Ext.getStore('userstore');
store.load({
callback:function(records)
{
localStorage.name=records[0].getData().name;
localStorage.mobile=records[0].getData().mobile;
localStorage.birthday=records[0].getData().birthday;
localStorage.email=records[0].getData().email;
localStorage.password=records[0].getData().password;
}
});
console.log(store.data);
// var data=JSON.parse(store.data);
// console.log(data);
var record=store.getAt();
console.log(record);
// var bday=localStorage.birthday;
// if(bday)
// {
// bday.setHours(0);
// bday.setMinutes(0);
// bday.setSeconds(0);
// bday.setMilliseconds(0);
// }
// console.log(bday);
Ext.getCmp('name').setValue(localStorage.name);
Ext.getCmp('mobile').setValue(localStorage.mobile);
Ext.getCmp('birthday').setValue();
Ext.getCmp('email').setValue(localStorage.email);
Ext.getCmp('password').setValue(localStorage.password);
}}
контроллер:
Ext.define('MyApp.controller.usercontroller', {
extend: 'Ext.app.Controller',
config: {
control: {
save: {
tap: 'FormSave'
}
},
refs: {
form:'basicform',
save: 'button[action=save]'
}
},
FormSave: function(button,e,options){
var details=this.getForm().getValues();
console.log(details);
var userStore = Ext.getStore('userstore');
userStore.add(details);
userStore.sync();
console.log(details.id);
Ext.Msg.alert('SUCCESS', 'Data Saved to Local Storage Successfully');}});
пожалуйста, напишите соответствующий вид и JSON.. это должно работать нормально, за исключением дня рождения
Вы можете запустить приложение из вашего любимого браузера, что-то вроде этого,
http://localhost:8080/ProficyAppData/your_name_app.html
Надеюсь, это поможет.:)