ExtJS 4 - Как получить доступ к нескольким магазинам из представлений в MVC? - PullRequest
2 голосов
/ 13 мая 2011

Я пытаюсь собрать приложение в extjs 4, используя новый метод MVC. У меня есть сетка, где пользователь может click на строке, и редактирование сделано Ext.window.

Это Ext.window с вкладками определяется в контроллере как представление. У меня проблемы с 2 вещами:


1) В окне есть 2 сетки, которые я хотел бы заполнить из магазина при нажатии на вкладку. При определении хранилища сетки я не могу получить к нему доступ, даже если в моем контроллере ему было отказано. Я пытался

...
xtype:'grid',
store:MyApp.store.Products
columns:[..]
...

но не повезло!

Также попытался определить несколько магазинов для представления:

Ext.define('MyApp.view.Edit', {
    extend:'Ext.window.Window',
    store:['Products','Countries']
...

Но тоже не повезло. Если в представлении определено только ОДНО хранилище, я могу получить к нему доступ, например, this.Countries.


2) Мой второй вопрос частично связан. The Ext.window - это форма, заполняемая данными из строки сетки, по которой вы щелкнули.

Как мне заполнить одну из сеток в форме Ext.window данными, которые были переданы в нее? Должно ли оно иметь пустое хранилище по умолчанию, а затем иметь прослушиватель на tabclick? Или я могу просто вставить объект данных в него?

Любая помощь приветствуется.

1 Ответ

1 голос
/ 13 мая 2011

Чтобы ответить на ваш первый вопрос, вам нужно сослаться на ваши магазины в контроллере. Вы можете сделать что-то подобное в вашем контроллере

stores  : ['Products', 'Countries'],

models  : ['Products', 'Countries'],

refs: [
    {ref: 'mytabpanel', selector: 'mytabs'}
],

 init: function() {
    this.control({
        'mytabs': {
            tabchange       : this.loadTabData
        },

     //create a onProductsStoreLoad method to handle stuff
     this.getProductsStore().on({
        scope: this,
        load : this.onProductsStoreLoad
    });


loadTabData: function() {
   var activeTab = this.getMytabpanel().getActiveTab();
   //Do whatever you need
}
...