$rootScope.$on('userIntercepted',function(errorType){ // 跳转到登录界面,这里我记录了一个from,这样可以在登录后自动跳转到未登录之前的那个界面 $state.go("login",{from:$state.current.name,w:errorType}); });
最后还可以在loginController中做更多的细节处理
// 如果用户已经登录了,则立即跳转到一个默认主页上去,无需再登录 if($rootScope.user.token){ $state.go($rootScope.defaultPage); return; }
另外在登录成功回调后还可以跳转到上一次界面,也就是上面记录的from
var from = $stateParams["from"]; $state.go(from && from != "login" ? from : $rootScope.defaultPage);