Extjs 如何屏蔽treepanel直到加载成功

Extjs 如何屏蔽treepanel直到加载成功,extjs,extjs4.1,Extjs,Extjs4.1,我定义了一个树面板。我尝试添加mask(),等待树加载完成。但不起作用 这是我的密码 Ext.define('Example.example', { extend: 'Ext.tree.Panel', alias: 'widget.example', title: 'example', store: Ext.create('Ext.data.TreeStore', { ... listeners: { 'load': functio

我定义了一个树面板。我尝试添加mask(),等待树加载完成。但不起作用

这是我的密码

Ext.define('Example.example', {
    extend: 'Ext.tree.Panel',
    alias: 'widget.example',
    title: 'example',
    store: Ext.create('Ext.data.TreeStore', {
    ...
    listeners: {
        'load': function (store, records, success) {
            Ext.ComponentQuery.query('example').getEl().unmask(); // not working
        },
        'beforeload': function (store, options) {                                    
            Ext.ComponentQuery.query('example').getEl().mask();// not working
        }
    }
})
});

如何使它工作感谢。

试试这个
Ext.ComponentQuery.query('example').body.mask()
使用body而不是
getEl()
或者使用未记录的
ownerTree
属性:

beforeload: function() {
    this.ownerTree.getEl().mask("Loading", 'x-mask-loading');
}
或者在方法中注册侦听器以获取范围:

Ext.define('Example.example', {
    // ...
    ,initComponent: function() {
        this.callParent(arguments);

        this.getStore().on({
            scope: this
            ,beforeload: function() {
                this.getEl().mask("Loading", 'x-mask-loading');
            }
        });
    }
});

我尝试了一下,但得到了类似
Ext.ComponentQuery.query(…).body未定义的错误
Ext.ComponentQuery.query('example')
返回您和对象是吗?我使用
警报(Ext.ComponentQuery.query('example'))进行测试beforeload
函数和get blank alert?console.log(Ext.ComponentQuery.query('example'))中的code>打印任何内容?我会收到类似这样的错误:“ownerTree.getEl(…)未定义”:(这意味着您的存储在注册侦听器之后,但在呈现树面板之前开始加载…如果(this.ownerTree.rendered){…}
以避免错误。如果希望在初始加载期间屏蔽树,还应在树的呈现事件上添加一个侦听器,类似于
If(this.store.isLoading()){this.getEl().mask()}
。这很好,但遮罩不在中间,请在“真实我的窗口”中查看我的示例代码,还有一些其他面板,同样的问题您是对的。请使用
afterlayout
事件而不是
render
来修复此问题。