Javascript extjs grid real full afterrender事件?

Javascript extjs grid real full afterrender事件?,javascript,events,extjs,grid,Javascript,Events,Extjs,Grid,我正在使用extjs GridPanel 加载存储时: I do Ext.getBody().mask(); Grid 'afterrender' event fires first Store 'load' event fires second I attached unmask function to store load 'event' 但在那件事之后的几分钟, 当我看到白色网格时(在取消掩码和填充行之间) 在真正的完整afterrender事件中,什么是解除遮罩的正确方法? 我

我正在使用extjs GridPanel

加载存储时:

I do Ext.getBody().mask();

Grid 'afterrender' event fires first

Store 'load' event fires second

I attached unmask function to  store load 'event'
但在那件事之后的几分钟, 当我看到白色网格时(在取消掩码和填充行之间)

在真正的完整afterrender事件中,什么是解除遮罩的正确方法? 我的意思是-当所有行都被渲染时


谢谢

我打算建议gridview的
加载掩码
配置,如文档中所述。但我注意到,出于某种原因,它对我不起作用

如果它对您也不起作用,只需使用gridview的
refresh
事件即可。它只有在数据完全加载到网格中后才会触发。您可以通过gridpanel的
viewConfig
config将其连接,如下所示:

Ext.create('Ext.grid.Panel', {
    title: 'My Grid Panel',
    // ... other grid panel configs
    viewConfig: {
        listeners: {
            refresh: function(gridview) {
                console.log(gridview);
                console.log('is fully loaded');
            }
        }
    },
});
或者,如果您使用的是MVC应用程序体系结构:

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',

    models: ['MyModel'],

    stores: ['MyStore'],

    views:  ['MyGridPanel'],

    init: function() {
        var me = this;

        me.control({

            // ... other event handlers

            'mygridpanel > gridview': {

                refresh: function(gridview) {
                    console.log(gridview);
                    console.log('is fully loaded');
                }

            },
        });
    }
});

我打算建议gridview的
loadMask
config,如文档中所述。但我注意到,出于某种原因,它对我不起作用

如果它对您也不起作用,只需使用gridview的
refresh
事件即可。它只有在数据完全加载到网格中后才会触发。您可以通过gridpanel的
viewConfig
config将其连接,如下所示:

Ext.create('Ext.grid.Panel', {
    title: 'My Grid Panel',
    // ... other grid panel configs
    viewConfig: {
        listeners: {
            refresh: function(gridview) {
                console.log(gridview);
                console.log('is fully loaded');
            }
        }
    },
});
或者,如果您使用的是MVC应用程序体系结构:

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',

    models: ['MyModel'],

    stores: ['MyStore'],

    views:  ['MyGridPanel'],

    init: function() {
        var me = this;

        me.control({

            // ... other event handlers

            'mygridpanel > gridview': {

                refresh: function(gridview) {
                    console.log(gridview);
                    console.log('is fully loaded');
                }

            },
        });
    }
});

有点晚了,但我刚刚不得不与一个类似的问题作斗争。在ExtJS3.4中,我可以处理网格事件
viewready
。虽然有点晚了,但我不得不解决一个类似的问题。在extjs3.4中,我可以使用网格事件
viewready