2013-09-25 1 views
0

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

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

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» метод не доступен. Может ли кто-нибудь помочь мне в реализации фильтра динамически правильно?

ответ

0

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

вар NVList = this.getNonVegList();