如何显示 XHR 请求的加载图标
How to show loading icon for XHR requests?
我有一个加载图像,该图像显示在$routeChangeStart
上,一旦路线更改就会隐藏。 我试图找到这样的东西,可以与xhrStart和xhrSuccess一起使用。
$rootScope.$on('$routeChangeStart', function(){
$rootScope.loading = true;
});
$rootScope.$on('$routeChangeSuccess', function(){
$rootScope.loading = false;
});
我知道我可以这样做:
$rootScope.loading = true;
$http.get('/api/customers').success(function(data) {
$rootScope.loading = false;
...
但这会变得乏味。
angularJS中是否有XHR事件可用于显示/隐藏加载图像?
如果加载图形是全局的,则可以使用 httpInterceptor
来解决此问题。 这是一个拦截器的天真实现,它切换$rootScope.loading
:
angular.module('myModule').factory('LoadingInterceptor', function ($rootScope) {
$rootScope.loading = false;
return {
request: function (config) {
$rootScope.loading = true;
return config;
},
response: function (response) {
$rootScope.loading = false;
return response;
}
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('LoadingInterceptor');
});
注意:您可能会遇到这种朴素实现的问题。 例如,您可能有并行 XHR 调用(此实现将导致加载程序刷新)。 这是因为当第一个呼叫响应发生时$rootScope.loading
被设置回false
(即使第二个调用仍在进行中)。
相关文章:
- Ajax请求文档就绪会导致jquery加载缓慢
- BrowserId登录请求在文档加载时被调用
- 重新加载主干.在Ajax请求后查看.怎样
- 在检索数据时是否可以停止图像加载请求
- 将JSON REST请求加载到Kendo ui列表视图中的问题
- 有没有一种方法可以用一个请求加载多个iframe
- 谷歌地图api无法根据ajax请求加载
- 无法使用 ajax post 请求加载网格
- 使用 XHR 请求加载图像
- 通过 HTTP 请求加载的元素的角度单击事件不起作用
- 使用$http请求加载新的HTML页面
- Steam Post请求-加载资源失败:服务器的响应状态为400(错误请求)
- 变量在使用异步AJAX(使用jQuery)请求加载数据时被覆盖
- Rails kaminari无限滚动:7个请求加载1页
- 用ajax请求加载GIF
- jQuery请求加载页面,这时出现404错误码
- 创建一个dojo小部件,通过请求加载另一个页面
- Javascript函数在通过Jquery Ajax请求加载页面后不起作用
- Ajax请求加载时间过长
- 如何在浏览器中通过POST请求加载外文图片