【问题标题】:How to Disable or Stop Angular BlockUI on particular request如何根据特定请求禁用或停止 Angular BlockUI
【发布时间】:2015-09-26 17:23:31
【问题描述】:

我已在任何请求上自动打开 BlockUI 显示,但我需要在特定请求上关闭。我需要这样的东西。

$scope.getTags = function ($query) {
            blockUI.notShow();
            return blogService.getTags($query)
        };

【问题讨论】:

    标签: angularjs blockui


    【解决方案1】:

    我尝试一些东西并工作。

    1) 停止自动屏蔽

    app.config(["$routeProvider", "blockUIConfig", function ($routeProvider, blockUIConfig) {
        blockUIConfig.autoBlock = false;
    }]);
    

    2) 创建拦截器

    app.config(["$httpProvider", function ($httpProvider) {
        $httpProvider.interceptors.push('myInterceptorService');
    }]);
    app.factory('myInterceptorService', ['$q', '$injector','blockUI',
        function ($q, $injector, blockUI) {
    
            var myInterceptorServiceFactory = {};
    
            myInterceptorServiceFactory.request = function (config) {
                if (blockUI.noOpen == null) {
                blockUI.stop();
            } else {
                blockUI.noOpen = null;
            }
                return config;
            }
            myInterceptorServiceFactory.responseError = function (rejection) {
                return $q.reject(rejection);
            }
            myInterceptorServiceFactory.response = function (response) {
                if (blockUI.noOpen == null) {
                blockUI.stop();
            } else {
                blockUI.noOpen = null;
            }
                return response || $q.when(response);
            }
    
            return myInterceptorServiceFactory;
        }
    ]);
    

    3) 控制器中的警报

    $scope.getTags = function ($query) {
                blockUI.noOpen = true;
                return blogService.getTags($query)
            };
    

    【讨论】:

    • 我想你打错了:第一个if (blockUI.noOpen == null)不应该是if (blockUI.noOpen == true)
    【解决方案2】:

    使用 McNull AngularJS 块 UI 模块...您可以使用 blockUIConfig.requestFilter 函数过滤掉特定请求...

    angular.module('yourAppModule').config(["blockUIConfig", function (blockUIConfig) {
        blockUIConfig.requestFilter = function (config) {
        //Perform a global, case-insensitive search on the request url for 'noblockui' ...
        if (config.url.match(/noblockui/gi)) {
            return false; // ... don't block it.
        }
    };}]);
    

    在特定请求上,只需将以下内容添加到 url...

    url = backendAddress + "/?noblockui";
    return $http.get(url);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-10
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多