每次在AngularJS中更改网址时调用哪个函数?

时间:2013-03-16 05:20:02

标签: angularjs angularjs-routing

我必须同时发出所有请求的队列而不等待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
        });
   });

2 个答案:

答案 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