我有一个基于angular.js构建的应用程序,我想在路径更改并在视图中呈现新模板时运行一个函数。我在控制器中找到了一种方法,当它被激活时,如下所示:
$scope.$on('$routeChangeStart', function(next, current){
//...do stuff here...
});
但是有没有办法在每次路线更改时运行一个功能,所以我只需输入一次?
答案 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
已创建一次并且在应用的生命周期内保留,因此您可以在此处安全地订阅此活动。