2012-06-25 3 views
1

Я хочу применить маску загрузки на странице просмотра. при запуске приложения некоторые страницы просмотра занимают время, чтобы загрузить данные позже, они будут отображаться, поэтому, если при этом потребуется время для загрузки, я хочу показать маску загрузки для пользователей с некоторыми сообщениями типа «загрузка ...». из некоторого образца я применил маску загрузки, но она показывает это сообщение каждый раз, когда я нажимаю эту страницу. это плохо, потому что здесь время установки. Мне нужно применить маску загрузки, например, если у нее нет данных, она должна показывать маску загрузки пользователю, пока страница не получит данные. пожалуйста, помогите мне. как достичь этого одинloadmask in sencha touch2

Мой код здесь:на уровне контроллера я беру идентификатор нагрузки маски и задается свойство, как показано ниже код

onCompanyPageLoad: function() { 
    var loader = Ext.getCmp('mask');   
    loader.setMessage("Loading..."); 
    loader.setIndicator(true); 
    loader.setTransparent(false);  
    loader.show();   
    setTimeout(function() {    
     loader.hide(); 
    }, 1000); 
} 

ответ

17

ответ user978790 является формальным способом показать и скрыть маску загрузки в Сенче Touch, 2.

Если вы не можете заставить его работать, это очень вероятно, что вы делаете что-то вроде:

Ext.Viewport.setMasked({xtype:'loadmask',message:'your custom loadmask'}); 
... then do something here 
Ext.Viewport.setMasked(false); 

Обратите внимание, что Javascript является асинхронным, поэтому НЕ проверяет, чтобы строки кода выполнялись в указанном выше порядке. Тогда возможно, что Sencha Touch инициализирует вашу маску загрузки и сразу же уничтожает ее. Чтобы правильно использовать маску загрузки:

  1. Инициализировать маску для загрузки, как указано выше.
  2. Поместите Ext.Viewport.setMasked(false); в специальные функции, которые должны запускаться после инициализации маски загрузки, например. обработчика событий или функции успеха вашего запроса JSONP/AJAX.
+0

спасибо ... сейчас он работает отлично .. –

7

Я делаю это в следующим образом:

Ext.Viewport.setMasked({xtype:'loadmask',message:'your custom loadmask'}); 

Затем вы можете использовать

Ext.Viewport.setMasked(false); 

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

+0

thanq для вашего ответа .. я применил ваш код, который не показывает маску загрузки ... –

+0

Можете ли вы разместить точный код, который вы пробовали? Это должно работать в каждом случае, когда на маске видоизменяется маска загрузки. – Rickert

0

Просто удалите все this.I есть хорошая идея, как использовать loader.First на основном страница HTML просто добавить Loader

<div id="loader"></div>//add id#loader with background loading image 

после загрузки страницы просто добавить на Ext.get('loader').destroy(); // регулятора, когда вам страницы полной нагрузки, то она будет загружать ваши загрузки DIV

+0

..i есть идентификатор как loader по просмотру страница. у контроллера у меня есть функция CompanyProfileViewInitialize в нижней части этой функции, я применил этот код Ext.get ('loader'). destroy() ;. эта функция получает данные и инициализирует страницу .. но здесь я не могу c d load-mask. ничего плохого в моем способе делать .. –

Смежные вопросы