Какую функцию вызывается каждый раз, когда url изменяется в AngularJS?
Мне нужно сделать очередь всех запросов одновременно, не дожидаясь ответа от предыдущего запроса в angularjs.
У меня есть функция загрузки, которая показывает загрузку div каждый раз, когда я изменяю маршрут URL, но не ok, чтобы сделать выделение очереди в этой функции.
Может ли кто-нибудь сказать мне, какая функция вызывается в маршрутах angularjs, когда каждый раз, когда я изменяю маршрут URL?
HEre - это код маршрута:
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
});
});
Ответы
Ответ 1
Вы можете использовать что-то вроде:
.run( function($rootScope, $location) {
$rootScope.$watch(function() {
return $location.path();
},
function(a){
console.log('url has changed: ' + a);
// show loading div, etc...
});
});
Ответ 2
Служба $route
имеет ряд событий, которые вы можете контролировать с помощью $.on
в контроллере:
$rootScope.$on("$routeChangeStart", function(args){})
$rootScope.$on("$routeChangeSuccess"....
$rootScope.$on("$routeChangeError"....
См. doc $route
Вы можете установить ng-show
в свой элемент вместо использования jQuery и установить переменную в true в обратном вызове $routeChangeStart
и false в обратном вызове $routeChangeSuccess
.
Хорошая демонстрация для этих событий: https://github.com/johnlindquist/angular-resolve