如何让angularJS routeProvider在路由更改之前执行操作?

时间:2013-11-05 10:56:45

标签: javascript angularjs

假设我有这个配置:

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider
        .when('/', { 
            templateUrl: 'app/partials/index.html',
            controller: 'defaultCtrl'
        })
        .when('/other', {
            templateUrl: 'app/partials/other.html',
            controller: 'errorCtrl'
        })
        .otherwise({ 
            templateUrl: 'app/partials/404.html'
        });
  }
]);

我正在寻找一个地方在路由器调用路由之前做一些基本的,通用的维护代码。假设每次路由更改时我都希望通过console.clear()清除控制台日志。如何以及在哪里成为代码中最好的地方?

1 个答案:

答案 0 :(得分:8)

$route服务引发$routeChangeStart等可用于执行此类任务的事件。您可以使用$ scope。$ on方法实现它们。喜欢

$scope.$on('$routeChangeStart',function(angularEvent,next,current) {
  //do you work here
});

阅读$route documentation,了解此事件和其他此类事件。

同样$routeProvider配置方法when也可以使用参数resolve,该参数实际上用于在解析路由之前设置依赖关系。此resolve对象映射也可用于实现您想要执行的操作。