带路由的自定义状态输入和状态退出代码

时间:2013-08-16 17:20:06

标签: angularjs angularjs-routing

我有一个相当简单的Angular项目,它在JavaScript中路由到几个不同的URL:

function RootController($scope) {};

function PageOneController($scope) {};

angular.module('mymodule', []).config(
    ['$routeProvider', function($routeProvider) {
        $routeProvider.when('/', {
             templateUrl: "templates/root.html",
             controller: RootController
        }).when('/page1/', {
             templateUrl: "templates/page1.html",
             controller: PageOneController
        }).otherwise({redirectTo: '/'});
    }]
);

到目前为止,一切都很顺利,但我确实需要一种方法来在输入和退出这些路径时运行一些JavaScript函数。即:

 $routeProvider.when('/', {
     templateUrl: "templates/root.html",
     controller: RootController,
     onenter: function() { console.log("Enter!"); },
     onexit: function() { console.log("Exit!"); }
 });

有没有办法在Angular中执行此操作?在输入状态/路由时,我需要绑定事件侦听器,在退出时我需要销毁它们并拆除它们。

1 个答案:

答案 0 :(得分:5)

$route service有两个事件$routeChangeStart$routeChangeSuccess,这些可以为您提供一些帮助。

您可以在退出前使用$routeChangeStart,在输入时使用$routeChangeSuccess

您可以在任何控制器上$scope.$on观看这些事件。