1

我尝试在用户等待面板显示时显示加载掩码。

我使用 Ext.LoadMask 喜欢:

loadingMask = new Ext.LoadMask(Ext.getBody(), {msg:"Loading..."});

loadingMask.show();
panel = new MyPanel();
panel .show();

在面板的后期渲染中

this.listeners = {
        afterrender: function () {
        loadingMask.hide();
        }
}

但是在面板出现之前没有显示加载蒙版,当我关闭面板时,我看到了加载蒙版。

我认为这意味着我的加载蒙版正在后台运行,所以我看不到它。

你知道这个问题的解决方案吗?我认为这似乎是一个层问题。

如何使加载蒙版显示在顶部并在面板的后渲染中隐藏它?

谢谢你。

4

3 回答 3

3

我想你正在寻找这样的东西:

 Ext.onReady(function(){
            var loadingMask = new Ext.LoadMask(Ext.getBody(), {
                msg: "Loading..."
            });

            loadingMask.show();
            var panel = new Ext.Panel({
                renderTo: 'div1',
                width: 100,
                height: 100,
                title: 'MyPanel',
                listeners: {
                    afterrender: function(){
                        loadingMask.hide();
                    }
                }
            });         

        });

我已经包含了 renderTo 配置选项来告诉 Ext 在页面上创建面板的位置。除了您的示例中的几个拼写错误之外,我认为主要问题是您的 afterrender 处理程序没有触发,因为您没有将它附加到您的面板对象。您需要将其分配为配置选项的一部分。您正在将您的 afterrender 处理程序分配给“this”,这很可能是您示例中的顶级窗口对象。

于 2011-07-27T07:30:34.840 回答
1

我把 MyPanel 的显示功能放在了延迟任务中。然后我将 unmask 实现放在 MyPanel 的 beforedestroy 监听器中。我认为这个 LoadMask 应该有一些回调机制。当我把节目放在一层之后,其他层就搞砸了。

于 2011-07-29T09:32:37.747 回答
1

这可能对您有用:

添加加载掩码

Ext.getBody().mask('Loading...', 'x-mask-loading', false);

移除加载掩码

Ext.getBody().unmask();
于 2011-07-27T16:25:11.973 回答