Сенча сенсорный получить данные из JSON
В последнее время я пытаюсь получить данные из файла json с помощью sencha touch, но он показывает 0 результатов. Пожалуйста, обратитесь к кодировке ниже и сообщите мне о моей ошибке,
Спасибо,
app.js
Ext.application({
name: 'TP',
views: [
'Main'
],
models: [
'User'
],
stores: [
'Users'
],
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
Ext.Viewport.add(Ext.create('TP.view.Main'));
var user = Ext.create('TP.model.User', {
name: 'James Henry',
age: 24,
phone: '555-555-5555',
username: 'Admin'
});
Ext.getStore('Users').on('load', this.onStoreLoad, this);
console.log(Ext.getStore('Users'));
},
onStoreLoad: function(self, records, success, operation){
console.log(self);
}
});
Model:: User.js
Ext.define('TP.model.User',{
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'},
{name: 'gender', type: 'string'},
{name: 'username', type: 'string'},
{name: 'alive', type: 'boolean', defaultValue: true}
],
validations: [
{type: 'presence', field: 'age'},
{type: 'length', field: 'name', min: 2},
{type: 'inclusion', field: 'gender', list: ['Male', 'Female']},
{type: 'exclusion', field: 'username', list: ['Admin', 'Operator']},
{type: 'format', field: 'username', matcher: /^[A-Za-z0-9 _]*$/ }
],
},
ageString: function(){
var age = this.get('age');
if(age > 1) {
return age + " yesrs old";
}else{
return age = " Yes old";
}
}
});
Store:: Users.js
Ext.define('TP.store.Users', {
extend: 'Ext.data.Store',
config: {
model: 'TP.model.User',
autoload: true,
proxy: {
type: 'ajax',
url: 'http://localhost/sencha/SenchaStarter/data/users.json',
reader: {
rootProperty: 'users',
type: 'json'
}
}
}
});
JSON-файл users.json
{
"users": [
{
"name": "Mike Henderson",
"age": 24,
"phone": "555-555-555",
"gender": "Male",
"username": "mhenderson",
"alive": true
},
{
"name": "Sally Michael",
"age": 34,
"phone": "555-555-555",
"gender": "Female",
"username": "sallym",
"alive": true
},
{
"name": "Rory Muldoon",
"age": 19,
"phone": "555-555-555",
"gender": "Male",
"username": "greatscott",
"alive": true
}
]
}
2 ответа
Магазин не загружается, потому что вы еще не загрузили его. Причиной является опечатка, когда вы написали эту конфигурационную опцию в своем магазине:
autoload
когда это должно быть:
autoLoad
Прокси вашего магазина настроен на ajax. Это не сохранит записи. Я считаю, что вы будете иметь доступ только к записям в onStoreLoad в app.js.
Возможно, вы могли бы (сейчас это просто теория) установить прокси-сервер ajax в вашей модели (я уверен, что вы можете это сделать, и рекомендуется Sencha, потому что вы можете переопределить этот прокси с прокси-сервером хранилища при необходимости http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2/) затем сохраните записи в хранилище, потому что я считаю, что типом прокси-хранилища по умолчанию является localalstorage.
Удачи:)