Параллельный вызов простого модального объекта - PullRequest
1 голос
/ 04 февраля 2011

Я должен сделать функцию параллельной нескольким модальным запросам на открытие / закрытие.

Например: Когда я вызываю 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();
        };
    };
};

Как лучше всего решить эту проблему?

1 Ответ

2 голосов
/ 04 февраля 2011
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 () каждый раз, когда ваш запрос завершается.

...