我必须同时发出所有请求的队列而不等待angularjs中先前请求的响应。
我有一个加载函数,每次更改url路由时都会显示加载div但不是确定在该函数中建立队列的阵列。
每当我更改url路由时,是否有人能告诉我在angularjs路由中调用了哪个函数?
HEre是路由代码:< / p>
angular.module('myApp', ['myApp.directives', 'myApp.services', 'myApp.filters']).config(
function($routeProvider, $locationProvider, $httpProvider) {
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
var loading = function (data, headersGetter) {
$('loadingDiv').show();
return data;
};
$httpProvider.defaults.transformRequest.push(loading);
$routeProvider.
when('/', {
templateUrl: 'elements/home/home.html',
controller: homeCtrl
});
});
答案 0 :(得分:23)
您可以使用以下内容:
.run( function($rootScope, $location) {
$rootScope.$watch(function() {
return $location.path();
},
function(a){
console.log('url has changed: ' + a);
// show loading div, etc...
});
});
答案 1 :(得分:23)
$route
服务包含一系列事件,您可以使用控制器中的$.on
进行监控:
$rootScope.$on("$routeChangeStart", function(args){})
$rootScope.$on("$routeChangeSuccess"....
$rootScope.$on("$routeChangeError"....
请参阅文档 $route
您可以在元素上设置ng-show
而不是使用jQuery,并在$routeChangeStart
回调中将变量设置为true,在$routeChangeSuccess
回调中将变量设置为false。
这些活动的一个很好的演示:https://github.com/johnlindquist/angular-resolve