1
我想檢查用戶是否每次轉換到狀態時都記錄,或者它的父節點有一些isLogged數據屬性。我的代碼是:異步調用後暫停轉換並重新啓動
service.watchHasAccess = function(){
$rootScope.$on('$stateChangeStart', function(event,toState,toStateParams){
if(typeof toState.data !=='undefined' && typeof toState.data.loggedIn !== 'undefined' && toState.data.loggedIn == true){
api.getWithPromise('user/isLoggedIn').then(function(response){
if(response.status !=='OK'){
event.preventDefault();
FlashMessage.showError('Zaloguj się aby przejść tutaj.');
$state.go('MainPage');
}
});
}
});
問題是,當轉換到限制狀態時,它會加載,但它幾乎會立即重定向到MainPage狀態。這就像閃光。這是因爲我使用異步請求,所以我認爲狀態只是轉換而不管請求的結果如何,但是接下來的響應就會正常轉換。我想達到的目標是等到承諾解決後再檢查並最終將用戶重定向到「MainPage」。那可能嗎 ?
我成功地做到這一點,但我有一個更題。我把這個解決方案放在我的「用戶」狀態,所以如果我去'user.stuff',解析會再次被檢查。問題在於,當進入'user.anything'狀態時,這個解決方案會執行一次,然後當我進入'user.anything2'時,這個解決方案不會再被解析。我有點理解爲什麼會發生這種情況,但問題在於,如果將「state.reload()」置於'user'狀態內使用的每個控制器之上,都有一些更好的解決方案。希望你明白我的問題:) –
我想我明白了。你有多個嵌套在'user'狀態的狀態。每當訪問其中的任何狀態時,都希望「用戶」狀態得到解決。我不認爲這是可能的。在同胞內導航時,父狀態永遠不會重新載入,因此永遠不會重新解析。除'$ state.reload()'之外,你可以在每個需要它的狀態下進行解析。 – TheSharpieOne
我認爲這樣做有點矯枉過正,我使用[code] $ state.reload()[/ code],因爲我知道這個控制器總是需要在登錄時使用。無論如何感謝你的回答:) –