ブロードキャストでルーティングを実行します。ルーティングで$ rootScope。$のパラメーターをコントローラーに渡す必要があります。
$rootScope.$on('unauthorized_access', function (event, args) {
$location.path('/login:' + args.msg);
});
これで動作します。
$routeProvider
.when('/', {
templateUrl: 'mainApp/landingPage/login.html'
})
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
// The params can be printed in console from here...
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController'
})
.otherwise({
redirectTo: '/'
});
これまでのところ、これは問題ありません。しかし、私はloginControllerにパラメータを渡す必要があります。私は試しました
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController',
pageParams : params
})
しかし、私は間違っていると思います。私を助けてください。どんな助けもありがたいです。ありがとうございました。
編集:シナリオを追加します。私は一定の時間の後に 'トークン'が無効になり、ユーザーがログイン画面にリダイレクトされたときに、loginControllerにメッセージ文字列を渡す必要があります。今、ユーザが最初に到着したときに、表示されるべきメッセージはない。次に、あなたのコントローラでは、あなたは以下のようなデータを取得することができます
$routeProvider
.when("/news", {
templateUrl: "newsView.html",
controller: "newsController",
resolve: {
message: function(messageService){
return messageService.getMessage();
}
}
});
: が故に、これは私が
$rootScope.$broadcast('unauthorized_access', param);
httpインターセプタでセッションの一貫性を監視する方がよいでしょう。 401エラーが発生した場合、セッションを終了してログインページにリダイレクトできます – Foker
はい、それは私がやっていることです。しかし、私もメッセージを渡す必要があります。だから私はそのメッセージ(リダイレクトの原因となったもの)をブロードキャストに入れました。これは401エラーでリダイレクトするサービスです。 service.responseError = function(resp){ var param = {}; if(resp.error == 401){ param.msg = "Token Expired"; } $ rootScope。$ブロードキャスト( 'unauthorized_access'、param); return resp; }; –
解決してください:) – Foker