2
這裏是我的.RUN功能:
.run(function ($transitions, UserService) {
$transitions.onStart({ to: function(state) {
return state.data != null && state.data.requireLogin === true && UserService.getUser().isLogged !== true;
}},function(trans){
var AuthService = trans.injector().get('AuthService');
var $q = trans.injector().get('$q');
var $state = trans.injector().get('$state');
var defer = $q.defer();
AuthService.login().then(function (status){
if(status === 'login'){
defer.resolve(true);
}else if (status === 'register'){
defer.resolve($state.target('map.register'));
}
}, function (msg){
// Here is part that I am asking for
defer.resolve(false);
});
return defer.promise;
});
});
基本上,如果轉換到狀態,需要登錄和用戶沒有登錄transitionHookFn
使用。在那裏我使用AuthService.login()
並返回狀態的承諾。如果AuthService.login()
失敗(用戶取消),promise將返回false並取消轉換,從而使用戶處於與原來位置相同的狀態。
當用戶嘗試訪問首次加載時的受限頁面並取消登錄時,問題開始,因爲沒有以前的狀態,整個頁面只是空白。
有沒有辦法取消過渡,如果有以前的狀態,如果沒有,然後重定向到家?我需要訪問以前的狀態,看看它是否存在。