有没有办法只监听非常的第一条路线开始而没有其他的路线? 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');
});
});
答案 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