Загрузка данных в список с помощью магазина sencha touch 2 - PullRequest
4 голосов
/ 31 марта 2012

Я создал навигационное представление, используя Sencha touch 2. В навигационном представлении есть компонент списка, который я хочу загрузить, используя магазин и модель. Я создал модель и храню по мере необходимости. При запуске моего приложения в списке не отображаются данные. Это также дает предупреждение в виде [Ext.dataview.List#applyStore] The specified Store cannot be found. Я не уверен, что означает эта ошибка. Вот мой код MVC,

Модель:

Ext.define('GS.model.BlogModel', {
extend: 'Ext.data.Model',

config: {
    fields: [
        {name: 'title', type: 'auto'},
        {name: 'author', type: 'auto'},
        {name: 'content', type:'auto'}
      ]
    }
});

магазин

Ext.define('GS.store.blogs',{
extend:'Ext.data.Store',
config:{
    model:'GS.model.BlogModel',
    autoLoad :true,
    proxy:{
                type:'jsonp',
                url:'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
                reader:{
                    type:'json',
                    rootProperty:'responseData.feed.entries'
                }
            }
}
});

вид:

Ext.define('GS.view.Blog',{
extend:'Ext.navigation.View',
xtype:'blog',
requires:[
    'Ext.dataview.List',
    'Ext.data.proxy.JsonP',
    'Ext.data.Store',
    'GS.store.blogs'
],
config: {
    title:'Blog',
    iconCls:'star',
    items:{
        xtype:'list',
        itemTpl:'{title}',
        title:'Recent Posts',
        store:'GS.store.blogs'
    }

}
});

Может кто-нибудь указать мне, что не хватает / Любая помощь приветствуется.

1 Ответ

6 голосов
/ 01 апреля 2012

Свойство store в items для вашего списка должно быть экземпляром, а не именем класса. GS.store.blogs - это имя класса. Вам нужно создать экземпляр этого класса, используя Ext.create и передать этот экземпляр в items. Ах да, и ваш синтаксис для items тоже неверен. Должен быть массивом [], а не объектом {}. Так что-то вроде:

var blogsStore = Ext.create("GS.store.blogs"); //put this in the items list

Ext.define('GS.view.Blog',{
    extend:'Ext.navigation.View',
    xtype:'blog',
    requires:[
        'Ext.dataview.List',
        'Ext.data.proxy.JsonP',
        'Ext.data.Store',
        'GS.store.blogs'
    ],
    config: {
        title:'Blog',
        iconCls:'star',
        items:[{
            xtype:'list',
            itemTpl:'{title}',
            title:'Recent Posts',
            store: blogsStore //Store instance here. And items are in array, not Object
         }]

    }
});
...