Я использую Sencha touch 2. У меня есть хранилище, которое загружается из существующего объекта js:
Ext.define('majestic.store.Dataset', {
extend : 'Ext.data.Store',
requires : [
'majestic.model.Dataset',
'majestic.util.config.ConfigurationManager'
],
config : {
model : 'majestic.model.Dataset',
type: 'memory',
reader: 'json',
autoLoad : true,
proxy: {
type: 'memory',
reader: {
type: 'json',
rootProperty : 'datasets'
}
}
},
constructor: function(config) {
this.callParent(arguments);
this.applyData(majestic.util.config.ConfigurationManager.getConfig());
}
});
Модель:
Ext.define('majestic.model.Dataset', {
extend : 'Ext.data.Model',
config : {
fields : [
'title'
],
associations: [
{type: 'hasMany', model: 'Layer', name: 'layers'}
]
}
});
И просмотр:
Ext.define('majestic.view.LayerList', {
requires: ['majestic.store.Dataset'],
extend: 'Ext.dataview.List',
config:{
store: 'Dataset',
itemTpl: '<div>{id} is {title}</div>',
itemSelector: "div"
}
});
Посмотрев на Просмотр данных в Sencha touch Я добавил autoLoad и itemSelector, но все равно не повезло.
Хотя при запуске
new majestic.store.Dataset().each(function(i) {console.log(i)});
выводит список объектовс заполненными атрибутами данных.
ОБНОВЛЕНИЕ
Я согласен с @fbrandel, что первый вариант заключается в том, как это должно работать, но после прочтения исходного кода ST я понял, что хранилищепараметр dataview интерпретируется как:
- объект хранилища
- нотация хранилища json, как в первом примере здесь
- имя уже созданного хранилища, котороеможет быть решена с помощью StoreManager.lookup
Итак, я получил:
- Оставив
store:'Dataset'
в представлении - Добавление
storeId : "Dataset"
для хранения, поэтому он может быть решен с помощью StoreManager - Добавление
stores: ['Dataset']
, которое вызвало создание majestic.store.Dataset
и регистрациюэто в StoreManager
PS Это также можно сделать с помощью this.setStore(new majestic.store.Dataset())
в initialization
методе GridView, но я предпочитаю декларативный способ там, где это возможно