2017-03-15 94 views
0

我認爲這是一個簡單的問題,但無法在谷歌上找到。我正在使用angular 1.5和ui-router 1.5。如何檢查當前的ui-view狀態是否具有下一個ui-state? (這是必需的,因爲我想檢查時後退按鈕被按下,或通過直接聯繫當前的UI視圖是否加載)檢查UI狀態是否有向前UI狀態

Case 1 
-------- 
view1 -> view2 -> view3 // now I have pressed back button 
view1 -> view2 ? // Here view2 actually had next state that was view3 

Case 2 
-------- 
view1 -> view4 -> view2 //Here view2 do not have next ui-state 

我一直在使用$ionicHistory.forwardView()嘗試,但它總是返回null。不知道爲什麼?任何幫助是極大的讚賞。

+0

你有沒有什麼合乎邏輯的方法來找出某些視圖是特定視圖的子視圖(比如view2)? – tanmay

+0

[如何使用角度檢測瀏覽器後退按鈕單擊事件]可能的重複(http://stackoverflow.com/questions/15813850/how-to-detect-browser-back-button-click-event-using-angular) – tanmay

回答

0

經過4個小時的搜索後,我想出了一些自定義解決方案。想分享。正確的錯誤處理還沒有完成。

// just listen to statechange success event 
app.run(['$rootScope', function($rootScope){ 
    $rootScope.$on('$stateChangeSuccess', 
     function(event, toState, toParams, fromState) { 
     // if fromState.name is empty, its refresh || first landing 
     var history = $window.localStorage.getItem('history'); 
     var back = false; 
     if (history !== null) { 
      history = JSON.parse(history); 
      if (toState.name === history.from && fromState.name === history.to) { 
       back = true; 
      } 
     } 
     $window.localStorage.setItem('history', JSON.stringify({ 
      to: toState.name, 
      from: fromState.name, 
      isBack: back 
     })); 
    }); 
}); 

注意我已經使用持久性存儲技術。人們也必須處理更新情況。