2011-02-04 1 views
1

Мне нужно сделать функцию, параллельную нескольким модальным запросам на открытие и закрытие.Параллельный вызов простого объекта

Для примера: Когда я вызываю showAjaxLoading (true), он показывает модальный и showAjaxLoading (false), он удаляет модальный.

Проблема: Когда я делаю первый длинный запрос на показ модального, и другой быстрый запрос закроет его. Я хочу иметь возможность хранить в массиве все запросы и удалять модальные только тогда, когда последний запрос завершен.

SimpleModal: Объект simplemodal уникален. Когда вы создаете модальный объект, он возвращает сам объект. Но когда у вас мода уже открыт, он возвращает false. URL: http://www.ericmmartin.com/projects/simplemodal/

var showAjaxLoading = function (show) { 
    var ajaxModal; 
    if (show) { 
     var aModal = $("#ajaxLoading").modal({ overlayId: 'ajaxloading-overlay', containerId: 'ajaxloading-container', closeClass: 'ajaxloading-close', close: false, escClose: false }); 
     if (aModal !== false) { 
      ajaxModal = aModal; 
     }; 
    } else { 
     if (ajaxModal !== undefined && $.isFunction(ajaxModal.close)) { 
      ajaxModal.close(); 
     }; 
    }; 
}; 

Что является лучшим решением, чтобы решить эту проблему?

ответ

2
var modalDialog = { 
    _requestsInProcess: 0, 

    showAjaxLoading : function() 
    { 
     if (this._requestsInProcess == 0) 
     { 
      // open overlay here 
     } 

     this._requestsInProcess++; 
    }, 

    hideAjaxLoading : function() 
    { 
     this._requestsInProcess--; 
     if (this._requestsInProcess == 0) 
     { 
      // hide overlay here 
     } 
    } 
} 

Попробуйте что-то вроде этого/Теперь вы можете вызвать modalDialog.showAjaxLoading() каждый раз, когда вы делаете запрос AJAX и modalDialog.hideAjaxLoading() каждый раз, когда ваш запрос завершен.

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

  • Нет связанных вопросов^_^