哪个函数被调用AngularJS每次网址的变化?(Which function is called

2019-08-17 16:19发布

我必须做出,而不必等待从angularjs先前请求的响应同时发生的所有请求的队列。
我有一个装载功能,其显示加载股利每一次我改变URL路径,但它不是确定以使队列的arrray该功能。

谁能告诉我该功能时,每次我更改URL路径被称为在angularjs路线?
这里是路线代码:

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
        });
   });

Answer 1:

你可以使用这样的:

.run( function($rootScope, $location) {
   $rootScope.$watch(function() { 
      return $location.path(); 
    },
    function(a){  
      console.log('url has changed: ' + a);
      // show loading div, etc...
    });
});


Answer 2:

$route服务有一系列可以使用监控事件的$.on在控制器:

$rootScope.$on("$routeChangeStart", function(args){})

$rootScope.$on("$routeChangeSuccess"....

$rootScope.$on("$routeChangeError"....

见文件$路线

您可以设置ng-show你的元素,而不是上使用jQuery和变量设置为真$routeChangeStart回调虚假$routeChangeSuccess回调。

一个很好的演示了这些事件: https://github.com/johnlindquist/angular-resolve



文章来源: Which function is called each time url changes in AngularJS?