extJS: Добавление grid.Panel из Controller в View приводит к зависанию приложения (MVC) - PullRequest
1 голос
/ 26 октября 2011

Я пытаюсь динамически создать grid.Panels и добавить их в мой View, так как я не знаю, сколько нужно "Views" перед загрузкой данных. Например, у меня есть несколько человек в разных группах, после загрузки данных я хочу создать сетку. Панель для каждой группы и добавить в нее правильных людей.

Проблема в том, что мое приложение зависает, когда я делаю это (возможно, потому что Магазин загружается рекурсивно)

Как добавить сетку. Панель в моем представлении с данными из магазина без зависания?

Мой контроллер:

Ext.define('NG.controller.Navigation', {
    extend: 'Ext.app.Controller',

    refs: [{
        selector: 'group',
        ref: 'groupPanel'}
    ],

    stores: ['Groups'],

    init: function() {
         this.control({
            'navigation': {
                itemdblclick: this.onNavigationSelection
            }
        });
    },
    onNavigationSelection: function(view, record, item, index, eventobj, obj) {

        var groupsstore = this.getGroupsStore();

        var group1 = Ext.create('Ext.grid.Panel', {
            store: groupsstore,
            title: 'Group 1',
            columns: [
                    {header: 'Name', dataIndex: 'name'},
                    {header: 'Mail:',  dataIndex: 'mail'}
            ]
        });

        groupsstore.load();

        this.getGroupPanel().add(group1);
    }
});

My View:

Ext.define('NG.view.Group', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.group',
    store: 'Groups',
    initComponent: function() {
        this.callParent();
    }
});

И мой магазин (не уверен, нужен ли он):

Ext.define('NG.store.Groups', {
    extend: 'Ext.data.Store',
    requires: 'NG.model.Person',
    model: 'NG.model.Person'
});

С уважением и заранее спасибо!

Andreas

Ответы [ 2 ]

1 голос
/ 27 октября 2011

После просмотра каждой ссылки я не смог найти ошибок в коде.Однако я обнаружил сообщение об ошибке по аналогичной проблеме:

http://www.sencha.com/forum/showthread.php?141804-4.0.5-Grid-Uncaught-RangeError-Maximum-call-stack-size-exceeded

Я загрузил Framework на прошлой неделе, и несколько дней назад было обновление, которое решило эту ошибку и мою проблемуа также.

Спасибо за помощь!

0 голосов
/ 27 октября 2011

Событие store.load () является асинхронным.Попробуйте переключить панель добавления и загрузить события магазина:

this.getGroupPanel().add(group1);
groupsstore.load();

Другое дело, не похоже, что вы что-то передаете в магазин для его загрузки.Таким образом, вы можете просто загрузить его и подготовить данные заранее.

...