Sencha Touch: динамическое изменение хранилищ с помощью одного списка

#javascript #model-view-controller #sencha-touch #extjs

#javascript #модель-представление-контроллер #sencha-touch #extjs

Вопрос:

Итак, я пытаюсь написать небольшое приложение MVC, которое часто использует списки. У меня есть одно представление, которое состоит из панели с панелью инструментов, прикрепленной к началу и списку:

 app.views.SalonListView = Ext.extend(Ext.Panel, {
    layout: 'card',
    cardSwitchAnimation: 'slide',
    dockedItems: [
        {
            xtype: 'toolbar',
            dock: 'top'
        }        
    ],
    items: [
    {            
        xtype: 'SalonList',
        id: 'salon-list'
    }
    ]
});
Ext.reg('ListView', app.views.SalonListView);
  

У меня есть xtype для списка, определенного в другом файле:

 app.views.SalonList = Ext.extend(Ext.List, {
    layout: 'card',
    itemTpl: // some tpl is here
});
Ext.reg('SalonList', app.views.SalonList);
  

Как вы можете заметить, я не устанавливаю хранилище для своего списка.
Чего я пытаюсь добиться, так это установить хранилище в любом контроллере, который я использую с этим представлением.
Что-то вроде:

 salonList: function() {
    app.stores.SalonStore.read();
    this.salonsView = this.render({
        xtype: 'SalonListView',
        // so I need to set store for the list somewhere around here
    });
}
  

Есть ли какая-либо возможность, я могу установить хранилище для списка динамически?

Комментарии:

1. Вы пробовали bindStore method?docs.sencha.com/touch/1-1 /#!/api/Ext.DataView-метод-bindStore

2. Что ж, я думаю, это должно сработать, но теперь вопрос в том, как я могу получить доступ к своему списку из области действия контроллера?

3. По идентификатору, т.е. Ext.getCmp('salon-list')

4. Он не может найти список по идентификатору до его отображения, и он не может быть отображен без привязки к нему хранилища…

5. затем вам нужно избегать использования отложенного рендеринга, создать экземпляр с помощью new Ext.List({})