并发调用 simplemodal 对象

发布于 2024-10-16 03:35:34 字数 991 浏览 5 评论 0原文

我必须使一个函数与多个打开/关闭模式请求并发。

例如:当我调用 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();
        };
    };
};

这是什么解决这个问题的最佳方案是什么?

I have to make a function concurrent to multiple open/close modal requests.

For exemple: When i call showAjaxLoading(true), it's showing the modal, and showAjaxLoading(false) it's disposing the modal.

The Problem: When i make a first long request to showing the modal, and another one quick request will close it. I want to be able keeping in a array all the requests and disposing the modal only when the last request is ended.

SimpleModal: The object simplemodal is unique. When you create the modal it return the object itself. But when you have a modal already open, it returns 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();
        };
    };
};

What the is the best solution to solve this problem ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撕心裂肺的伤痛 2024-10-23 03:35:34
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
        }
    }
}

尝试这样的操作/现在,您可以在每次发出 AJAX 请求时调用 modalDialog.showAjaxLoading() ,并在每次请求完成时调用 modalDialog.hideAjaxLoading() 。

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
        }
    }
}

Try something like this/ Now you can call modalDialog.showAjaxLoading() each time you making AJAX request and modalDialog.hideAjaxLoading() each time your request is completed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文