1

我正在尝试动态创建 grid.Panels 并将它们添加到我的视图中,因为我不知道在加载数据之前我需要很多“视图”。例如,我有很多人在不同的组中,一旦我加载数据,我想为每个组创建一个 grid.Panel 并将正确的人放入其中。

问题是我的应用程序在我执行此操作时挂起(可能是因为 Store 正在递归加载)

如何使用来自商店的数据将 grid.Panel 添加到我的视图而不挂起?

我的控制器:

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);
    }
});

我的观点:

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'
});

最好的问候,并在此先感谢您!

安德烈亚斯

4

2 回答 2

1

在遍历每个参考后,我在代码中找不到任何错误。但是我发现了一个关于类似问题的错误报告:

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

我上周下载了框架,几天前有一个更新,它解决了这个错误和我的问题。

感谢您的帮助!

于 2011-10-27T12:49:06.193 回答
0

store.load() 事件是异步的。尝试切换添加面板并加载存储事件:

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

另一件事是它看起来不像您将任何东西传递给商店来加载它。因此,您可以自动加载它并提前准备好数据。

于 2011-10-27T01:42:25.253 回答