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);
});