AngularJS $ routeChangeStart只有第一次事件

时间:2013-11-12 22:09:00

标签: angularjs

有没有办法只监听非常的第一条路线开始而没有其他的路线? Obvs这可以用变量来完成,但是想知道是否有相应的事件。

       $rootScope.$on("$routeChangeStart", function (event, next, current) {
            Auth.authorize().then(function(){
                // only want to happen the first time
                // $location.path('dlp');
            },function(){
                $location.path('login');
            });
        });

1 个答案:

答案 0 :(得分:3)

如果您将广告分配给变量并将其作为函数调用,则可以取消订阅$ rootScope。$:

var offCallMeFn = $rootScope.$on("$routeChangeStart", function(event, next, current){
        Auth.authorize().then(function(){
            // only want to happen the first time
            // $location.path('dlp');
        },function(){
            $location.path('login');
        });
});

 //this will deregister that listener
offCallMeFn();

对于处理授权,这似乎是一个坏主意,但是用户可能会手动访问路由(例如从浏览器历史记录中)或可能注销。

来源:How to unsubscribe to a broadcast event in angularJS. How to remove function registered via $on