[英]Angular reload url but not the state view
我正在使用OAuth2協議開發應用程序,我遇到了UI.router模塊的問題。
實際上,在每個狀態發生變化之前,我需要測試訪問令牌是否存儲在sessionStorage中。 所以我使用像這樣的run
函數:
.run(['$state', '$window', '$location', '$rootScope', function ($state, $window, $location, $rootScope) {
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
var accesstoken = sessionStorage.getItem('access_token');
if (!accesstoken) {
if ($location.url() !== '/access/connexion') {
$state.go('access.connexion', null, { reload: true });
}
}
});
}])
我們現在承認我沒有連接,我嘗試訪問像/ users / 12355這樣沒有訪問令牌的URL:
事實是URL刷新,從/ users / 12355傳遞到/ access / connexion,但視圖仍然是/ users / 12355對應的視圖(沒有加載任何信息,因為我沒有訪問令牌)
我不知道是什么問題......
而且,如果我在$state.go
之上的console.log
,似乎我在這個日志中傳遞了400次。 如果我刪除$state.go
函數,我只通過一次...
你能幫助我嗎?
注意:access.connexion是根狀態
如果未找到令牌,請嘗試阻止狀態更改:
if (!accesstoken) {
event.preventDefault();
if ($location.url() !== '/access/connexion') {
$state.go('access.connexion', null, { reload: true });
}
}
添加notify: true
到$state.go
params json應解決它,改變這個:
$state.go('access.connexion', null, { reload: true });
至:
$state.go('access.connexion', null, { reload: true, notify: true });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.