#javascript #extjs #extjs4
#javascript #extjs #extjs4
Вопрос:
Я использую ExtJS 4. Мое требование заключается в том, что когда я показываю маску загрузки, щелчки пользователя должны игнорироваться. Как я могу этого добиться?
Комментарии:
1. Это своего рода то, что делает маска загрузки.. можете ли вы подробнее рассказать о своей проблеме?
Ответ №1:
Вы можете установить маску загрузки в теле документа следующим образом…
// показывать счетчик во время всех запросов Ajax var myMask = new Ext.LoadMask(Ext.getBody(), { сообщение: «Пожалуйста, подождите …» });
// Ajax loading message..
Ext.Ajax.on('beforerequest', myMask.show, myMask);
Ext.Ajax.on('requestcomplete', myMask.hide, myMask);
Ext.Ajax.on('requestexception', myMask.hide, myMask);
Итак, когда у вас есть процесс в вашем приложении (обычно в Extjs4 все основные процессы выполняются вызовом Ajax), вы можете получить маску для всего тела.
Или, если это не ваше требование, вы также можете использовать следующий метод…
setLoading( Boolean/ Object / String load, Boolean targetEl) : Ext.Загрузочная маска Этот метод позволяет отображать или скрывать загрузочную маску поверх этого компонента.
Параметры загружаются: Boolean/Object/String True для отображения маски загрузки по умолчанию, объекта конфигурации, который будет передан конструктору маски загрузки, или строки сообщения для отображения. False, чтобы скрыть текущую LoadMask. targetEl : Логическое значение True, чтобы замаскировать целевой объект этого компонента вместо this.el. Например, установка для этого значения true на панели приведет к маскированию только тела. (по умолчанию false) Возвращает Ext .LoadMask Экземпляр LoadMask, который только что был показан.
Ответ №2:
Вы можете проверить, загружается ли маска загрузки, используя свойство element.loadMask.loading
xtype: 'button',
handler: function() {
this.setLoading(true);
if (!this.loadMask.loading) {
//click action
}
}
Комментарии:
1. Спасибо за информацию. Позвольте мне подробнее остановиться на моем требовании. Я маскирую весь экран просмотра, когда выполняется определенное действие. В течение этого времени, если пользователь нажимает в любом месте экрана, они должны игнорироваться. на моей странице много вкладок и других элементов, и щелчок пользователя по всем из них не должен ставиться в очередь. Основываясь на вашем предложении, я должен перейти к каждому элементу, чтобы выполнить это. Я искал централизованный способ отключения пользовательских кликов при отображении маски области просмотра
2. Использование setLoading(true) в окне просмотра маскирует весь экран, а элементы внутри окна просмотра не должны быть интерактивными. По крайней мере, их нет, когда я тестирую. Ext.getCmp(‘viewport’).setLoading(true);