EXTJs Grid Проблема с LoadMask (решено)

Вот, поскольку все работы сделал решил почитать форум санчи, более подробно. Итак, наткнулся на очередную проблему. В гридах «екстджиэс» есть возможность показывать небольшое окошко «Loading»,  пока идет загрузка данных в таблицу. По какой-то непонятной причине это окошко нельзя вызвать программно, перед загрузкой екст-окна. То есть оно появиться сразу с созданием окна, а не перед этим, сразу после дабл-клика.

(Here is  example) Вот пример, если кто хочет поломать голову …

А вот попытка (try to resolve) решить эту проблему.

Проблема была в том, что «ява скрипт — это однопоточная среда. И некоторые браузеры не обновляют содержимое экрана до тех пор, пока не будут выполнены все тяжеловесные процессы. Чтобы показать окно загрузки надо дать браузеру короткий промежуток времени.»

Вот, например, таким способом:

loadMask.show();
(function(){
  // do stuff
  loadMask.hide();
}).defer(10);

EXTJs Grid Проблема с LoadMask (решено): 2 комментария

  1. Смысл в том, что если мы грузим в грид инфу из БД, то мы сожем использовать маску, привязав ееизначально к загрузке Store:

    var companies = new Ext.data.Store({
    reader: new Ext.data.JsonReader({
    fields: [
    ‘user_id’,
    ‘user_login’,
    ‘user_profile_name’,
    ],
    root: ‘rows’
    }),
    proxy: new Ext.data.HttpProxy({
    url: ‘урл который грузит компании из БД/companies.php’
    }),
    autoLoad: false
    });

    Изначально autoLoad ставим в значение false, а затем после подключения маски уже грузим companies.load(); Маска становится связанной с хранилищем companies:

    var card = Ext.get(‘cardID’);
    var mask = new Ext.LoadMask(Ext.get(‘cardID’), {msg:»Загрузка данных…», store:companies});
    companies.load();

    cardID — это идентификатор таба в гриде:
    var viewport = new Ext.Viewport({
    бла бла …
    items: [{
    title: ‘Карточки’,
    xtype: ‘editorgrid’,
    id: ‘cardID’,
    clickstoEdit: 1,
    store: companies,
    colModel: new Ext.grid.ColumnModel({
    бла бла …

  2. По сути да, можно привязать «к нагрузке», но бывает, что надо показывать не при перезагрузке/лоаде грида, а когда у тебя всплывает фанси-бокс, который грузиться секунд пять, скажем (база связанная, поиск, обработка курлом) дык яваскрипт работает непрерывно. Вот и не показывает ничего :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *