0

有没有办法只听第一个路线开始而没有其他人?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');
            });
        });
4

1 回答 1

3

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

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();

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

来源:如何取消订阅 angularJS 中的广播事件。如何删除通过 $on 注册的函数

于 2013-11-12T22:41:58.393 回答