0
Webアプリケーションでは、ユーザーが$状態でルートを指定したときに、Angularがトークンがあるかどうか、そして彼に許可があるかどうかチェックします。しかし、私は問題があります:event.preventDefault()を実行しても、ループを開始し、ブラウザがクラッシュします。このループを防ぐにはどうしたらいいですか?
コード:あなたは/ログインのようなルートを持っているので、もし
.run(function ($rootScope, $window, $state, Auth) {
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, $window) {
// Easy case that doesn't loop: just 'return'
if (toState.name === 'login'){
// doe she/he try to go to login? - let him/her go
return;
}
if (Auth.isLoggedIn && $window.localStorage.identityToken) {
var requiredAdmin = toState.data.requiredAdmin;
if (requiredAdmin && $window.localStorage.isAdmin){
$state.go(toState.name); // it starts the loop
} else { // if he is logged but has no permission, stop the navigation
$state.go(fromState.name); // it starts the loop
}
return;
}
});
ありがとう、私は約束のアプローチを試みました!ここにコードはあります:https://jsfiddle.net/tzhxok68/2/コンソールはこのエラーを表示します:未定義のプロパティ 'promise'を設定できません – panagulis72
経路が定義されているときに状態定義は$ stateProvider.stateを通して設定ブロック上で起こります –