Extjs Load Mask

У меня есть сетка, которая при нажатии занимает несколько секунд, чтобы открыть всплывающее окно. Я хотел бы, чтобы во время загрузки всплывающего окна отображалось сообщение "загрузка...". Это то, что я до сих пор:

    onCellClick : function(view, td, eOpts ) {
    var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
    myMask.show();
    Ext.create('myapp.view.DetailWindow', {
        title : 'my title',
        width : 900,
        approachRec : record
    });
    myMask.hide();

}

Прямо сейчас это работает отлично, как только я щелкаю по ячейке в сетке, появляется мое окно загрузки, а затем исчезает, как только появляется "DetailWindow".

Однако, как только я закрываю окно и снова нажимаю на другую ячейку (или ту же). Окно загрузки не появляется, но мое окно подробностей появляется. Что я делаю неправильно?

Что мне нужно сделать, чтобы окно загрузки отображалось при каждом нажатии на ячейку?

Я использую Extjs 4.2

Спасибо,

1 ответ

Решение

Код, который вы разместили, не показывает () окно, он просто создает его. Ниже приведен некоторый код, который я разработал, который "работает" (я использовал setTimeout, чтобы показать окно после 3-секундной задержки, а затем, чтобы скрыть маску загрузки), но я думаю, что, чтобы добраться до сути вашей проблемы, вам нужно будет использовать ваш отладчик и посмотреть, отображает ли он какие-либо ошибки в консоли.

grid.on('cellclick', function() {
    var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
    myMask.show();
    var window = Ext.create('Ext.window.Window', {
        title: 'Hello',
        height: 200,
        width: 400
    });
    setTimeout(function() {
        window.show();
        myMask.hide();
    }, 3000);
});
Другие вопросы по тегам