1
在我的web應用程序中,我想驗證用戶是否有權繼續。Angular函數沒有使用顯式註釋,也不能在嚴格模式下調用
這是我index.js文件。運行方法:
.run(function (event, toState, toParams, fromState, $window) {
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, $window) {
if (Auth.isLoggedIn && $window.localStorage.identityToken) {
var requiredAdmin = toState.data.requiredAdmin;
if (requiredAdmin && $window.localStorage.isAdmin){
$state.go(toState.name);
} else {
$state.go(fromState.name);
}
var shouldGoToMain = fromState.name === 'login' && toState.name !== 'app.dashboard' ;
if (shouldGoToMain){
$state.go('app.dashboard');
event.preventDefault();
} else {
$state.go(toState.name);
}
return;
} else {
$state.go('login');
return;
}
// unmanaged
});
});
控制檯錯誤是:Uncaught Error: [$injector:strictdi] function(event, toState, toParams, fromState, $window) is not using explicit annotation and cannot be invoked in strict mode
它的工作原理,但控制檯給我這個錯誤:$ state.go不是一個函數。爲什麼? (我也添加了兩個依賴於你的代碼:.run(['$ rootScope','$ window',function($ rootScope,$ window){$ rootScope。$ on('$ stateChangeStart',function(event ,toState,toParams,fromState,Auth,$ state)) – panagulis72
你再犯同樣的錯誤,傳遞給$ on的方法不是一個可注入的函數,將Auth和$ state傳遞給該函數根本沒有意義。這些服務應該被注入到傳遞給run()的函數中(因此它們的名字也應該被添加到數組中) –
完成!但是我有一個奇怪的本地錯誤...當它到達其他地方{$ state.go 'login');}它返回if(Auth.isLoggedIn && $ window.localStorage.identityToken),然後轉到$ state.go('login')並回到if(Auth ....)並繼續不動瀏覽器崩潰...如果你想,我推這裏的所有代碼:http://stackoverflow.com/questions/36677234/statechange-causes-inspected-target-crash-in-angular – panagulis72