Динамически загружать данные магазина и отображать их в списке

Я пытаюсь показать набор элементов в виде списка. На сервере все элементы в одном файле принадлежат к различным подкатегориям с идентификатором категории, назначенным для каждой подкатегории. В настоящее время у меня магазин может импортировать все данные, если фильтр не применен. Если это так, он показывает элементы, принадлежащие к этой конкретной подкатегории.

Мой код магазина выглядит следующим образом:

 Ext.define('RestaurantGlobal.store.SubCategoryColumnsStoreNonVeg', {
     extend: 'Ext.data.Store',

     requires: [
         'RestaurantGlobal.model.ItemColumns'
     ],

     config: {
         autoLoad: false,
         model: 'RestaurantGlobal.model.ItemColumns',
         storeId: 'SubCategoryColumnsStoreNonVeg',
         proxy: {
             type: 'ajax',
             url: 'data/NonVegItemsColumnsStore.json',
             reader: {
                 type: 'json',
                 rootProperty: 'Item'
             }
         },
         filters: [{
                     property: 'SubCategory_id',
                     value: /0c9b01f6b3b2493b907a42e07010064800001/
                 }]
     },
 });

В моем приложении есть представление категорий, в котором отображается список категорий, а затем представление подкатегорий, содержащее элементы, принадлежащие выбранной категории. Я хочу динамически фильтровать данные, полученные из магазина, на основе категории, выбранной пользователем в предыдущем представлении, и отображать ее в списке. Мой код просмотра списка выглядит следующим образом:

 Ext.define('RestaurantGlobal.view.SubCategories', {
     extend: 'Ext.navigation.View',
     xtype: 'SubCategories',

config: {
    layout: {
        type: 'card'
    },
    items:[
        {
            xtype: 'container',
            title: 'Category Name',
            styleHtmlCls: 'maincontainer',
            styleHtmlContent: true,
            layout: {
                type: 'vbox'
            },
             items: [
                        {
                            xtype: 'container',
                            title: 'Non-Veg',
                            margin: '0 10 0 10',
                            items: [
                                {
                                    xtype: 'list',
                                    id: 'nonVegList',
                                    autoPaging: true,
                                    height: '100%',
                                    store: 'SubCategoryColumnsStoreVeg',
                                    itemTpl: [
                                         '<div>{Image}{Name}</div>'
                                    ],
                                },
                            ]
                        },        
                        {
                                xtype: 'container',
                                items: [
                                  {
                                     xtype: 'button',
                                     cls: 'btn',
                                     docked: 'bottom',
                                     margin: '0 0 0 0',
                                     text: 'Place Order'
                                  }
                                ]
                        }
                  ]
             }
        ]
     } 
});  

Мой контроллер имеет функцию касания элемента, назначенную предыдущему представлению категории. Функция написана здесь:

  onCustomDataViewItemTap: function(dataview, index, target, record, e, eOpts) {
    categoryId = record._data.id;

    var NonVegStore =       Ext.create('RestaurantGlobal.store.SubCategoryColumnsStoreNonVeg');
    // clear all existing filters
    NonVegStore.clearFilter();
    NonVegStore.filter('SubCategory_id', '/' + categoryId + '/');
    NonVegStore.load();
    var NVList = this.getNonVegList;
    NVList.setStore(NonVegStore);

    var SubCategories = Ext.create('RestaurantGlobal.view.SubCategories');
    Ext.Viewport.add(SubCategories);
    Ext.Viewport.setActiveItem(SubCategories);
},

Я добавил фильтр, перезагрузил хранилище и использовал его со списком, но получаю сообщение об ошибке, говорящее о том, что метод setStore недоступен. Может ли кто-нибудь помочь мне в динамической реализации фильтра правильно?


person EternalFlea    schedule 25.09.2013    source источник


Ответы (1)


Я думаю, проблема в том, что при получении списка измените его как

var NVList = this.getNonVegList();

person achu    schedule 05.11.2013