gpt4 book ai didi

angularjs - 使用 httpInterceptor 和 AngularJS 1.1.5 实现加载微调器

转载 作者:行者123 更新时间:2023-11-28 08:04:05 25 4
gpt4 key购买 nike

我在这里找到了一个用于 http/资源调用的加载微调器的示例:

如您所见,实现有效(使用 AngularJS 1.0.5)。但是,如果将源更改为 AngularJS 1.1.5。该示例不再有效。

我了解到 $httpProvider.responseInterceptors 在 1.1.5 中已弃用。相反,应该使用 $httpProvider.interceptors

不幸的是,仅替换 Plunker 中的上述字符串并不能解决问题。有没有人在 AngularJS 1.1.5 中使用 HttpInterceptor 做过这样的加载旋转器?

感谢您的帮助!

迈克尔

最佳答案

感谢 Steve 的提示,我能够实现加载程序:

拦截器:

.factory('httpInterceptor', function ($q, $rootScope, $log) {

var numLoadings = 0;

return {
request: function (config) {

numLoadings++;

// Show loader
$rootScope.$broadcast("loader_show");
return config || $q.when(config)

},
response: function (response) {

if ((--numLoadings) === 0) {
// Hide loader
$rootScope.$broadcast("loader_hide");
}

return response || $q.when(response);

},
responseError: function (response) {

if (!(--numLoadings)) {
// Hide loader
$rootScope.$broadcast("loader_hide");
}

return $q.reject(response);
}
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');
});

指令:

.directive("loader", function ($rootScope) {
return function ($scope, element, attrs) {
$scope.$on("loader_show", function () {
return element.show();
});
return $scope.$on("loader_hide", function () {
return element.hide();
});
};
}
)

CSS:

#loaderDiv {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1100;
background-color: white;
opacity: .6;
}

.ajax-loader {
position: absolute;
left: 50%;
top: 50%;
margin-left: -32px; /* -1 * image width / 2 */
margin-top: -32px; /* -1 * image height / 2 */
display: block;
}

HTML:

<div id="loaderDiv" loader>
<img src="src/assets/img/ajax_loader.gif" class="ajax-loader"/>
</div>

关于angularjs - 使用 httpInterceptor 和 AngularJS 1.1.5 实现加载微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24996342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com