1

データをロードする前に必要な多くの「ビュー」があるかどうかわからないため、動的に grid.Panels を作成してビューに追加しようとしています。たとえば、さまざまなグループに多数の人がいます。データをロードしたら、各グループに grid.Panel を作成し、適切な人をそこに配置したいと考えています。

問題は、実行するとアプリケーションがハングすることです (おそらくストアが再帰的にロードされているため)

ハングすることなく、ストアからのデータを使用してビューに 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();

もう 1 つのことは、ロードするためにストアに何かを渡していないように見えることです。したがって、それを自動ロードして、事前にデータを準備することができます。

于 2011-10-27T01:42:25.253 に答える