更改路径时的AngularJS UI-Router事件

时间:2015-04-11 21:20:13

标签: angularjs angularjs-routing

使用ngRoute可以在事件中挂钩:$routeChangeStart并执行不同的操作......

 app.run(function ($rootScope, $location) {
    $rootScope.$on("$routeChangeStart", function (event, next, current) {
    ................

是否可以使用UI-Router实现相同的目标?

3 个答案:

答案 0 :(得分:12)

是的,有可能:

$rootScope.$on("$stateChangeStart",
    function (event, toState, toParams, fromState, fromParams) {

答案 1 :(得分:1)

或者只是使用

$scope.$on("$stateChangeStart",...);

如果您希望在单个页面上触发此操作。

答案 2 :(得分:0)

在此处检查此答案,这是解决问题的正确方法。删除所有侦听器可能会产生未知的影响,因为可能还会在其他地方添加侦听器。您需要删除添加的一个,而不是全部删除。

检查此问题:Angular $rootScope $on listeners in 'destroyed' controller keep running

也在此处复制代码以确保完整性:

animateApp.controller('mainController', function($scope, $rootScope, service) {
    $scope.pageClass = 'page-home';
    var unregister = $rootScope.$on('service.abc', function (newval) {
        console.log($scope.$id);
    });
    $scope.$on('$destroy', unregister);
});