在每次路线更改时运行功能

时间:2014-03-06 10:38:45

标签: javascript angularjs angularjs-routing

我有一个基于angular.js构建的应用程序,我想在路径更改并在视图中呈现新模板时运行一个函数。我在控制器中找到了一种方法,当它被激活时,如下所示:

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

但是有没有办法在每次路线更改时运行一个功能,所以我只需输入一次?

2 个答案:

答案 0 :(得分:3)

我有更好的解决方案。你可以在你的主文件中添加一个运行块(你定义你的app),并为$ routeChangeStart插入一个事件handeer。这样你就不必在你的html中添加任何内容。看看我的例子:

yourAppNAme.run(function($rootScope) {
     $scope.$on('$routeChangeStart', function(next, current){
         //...do stuff here...
     });
});

这个exmaple cheked,我目前正在处理我的angularjs应用程序。

答案 1 :(得分:1)

如果这是您的观点

<div ng-app='myApp'>
   <ng-view/>
</div>

将其更改为

<div ng-app='myApp' ng-controller='RootController'>
   <ng-view/>
</div>

RootController中,您可以为$routeChangeStart添加事件处理程序。由于您的RootController已创建一次并且在应用的生命周期内保留,因此您可以在此处安全地订阅此活动。