【发布时间】:2015-09-26 17:23:31
【问题描述】:
我已在任何请求上自动打开 BlockUI 显示,但我需要在特定请求上关闭。我需要这样的东西。
$scope.getTags = function ($query) {
blockUI.notShow();
return blogService.getTags($query)
};
【问题讨论】:
我已在任何请求上自动打开 BlockUI 显示,但我需要在特定请求上关闭。我需要这样的东西。
$scope.getTags = function ($query) {
blockUI.notShow();
return blogService.getTags($query)
};
【问题讨论】:
我尝试一些东西并工作。
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)?
使用 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);
【讨论】: