Ext.LoadMask остается в фоновом режиме панели загрузки - PullRequest
1 голос
/ 27 июля 2011

Я пытаюсь показать маску загрузки, пока пользователь ждет отображения панели.

Я использую Ext.LoadMask как:

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

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

и в подменю панели

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

Но маска загрузки не отображается, пока не появится панель, и когда я закрываю панель, я вижу маску загрузки.

Я думаю, это означает, что моя маска загрузки работает в фоновом режиме, поэтому я не вижу ее.

Есть ли решение, которое вы знаете по этому вопросу? Мне кажется, это проблема со слоем.

Как сделать так, чтобы маска загрузки отображалась сверху, а в подменю панели скрывать ее?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

Я думаю, вы ищете что-то вроде этого:

 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 'this', который вполне может быть объектом окна верхнего уровня в вашем примере.

1 голос
/ 29 июля 2011

Я поставил функцию показа MyPanel в отсроченную задачу. Затем я поместил реализацию демаскирования в beforedestroy слушателя MyPanel. Там должен быть какой-то механизм обратного вызова для этой вещи LoadMask, я думаю. Когда я ставлю шоу, следующие один и другие слои портятся.

1 голос
/ 27 июля 2011

Это может работать для вас:

Добавить маску загрузки

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

Удалить маску загрузки

Ext.getBody().unmask();
...