2016-04-04 33 views
0

該應用程序有頁面,X,YZ。因此,路由應如下進入頁面X,然後選擇一些細節,然後轉到頁面Y,然後選擇一些更多細節,然後轉到Z。所以我希望在進入Z頁面後,我點擊窗口後退按鈕,它應該轉到頁面X而不是頁面Y。從YZ,我也嘗試在$state.go中加入{ location: 'replace' },但它不起作用。任何想法如何實現?ui路由器改變以前的狀態

感謝

+0

簡單的解決方案是隻有2個狀態,X和Z.當你在X頁面上選擇一些細節並轉到Y時,而不是使用'ui.router'去到Y,隱藏當前div並顯示div那裏有Y的內容。然後在選擇更多的細節時,使用'ui.router'去Z. – AdityaParab

+0

@AdityaParab,我需要一個不同的頁面'Y' – AbKDs

+0

你的意思是'page',因爲它必須有一個路線? – AdityaParab

回答

2

每次你改變的狀態,角度會觸發一個事件稱爲$stateChangeStart,您可以使用對你有利。

在你app.run,做

app.run(function($rootScope,$state){ 
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { 
     //Check if you're going from Z to Y 
     if(fromState.name === 'Z' && toState.name === 'Y'){ 
      // if so, first stop the default behavior 
      event.preventDefault(); 
      // then navigate to X 
      $state.go('X'); 
     } 
    }); 
}); 

瀏覽器後退按鈕基本觸發同樣的事件,以便您的問題將與此得到解決。

+0

它的工作感謝男人:) – AbKDs

0

就這樣 給你的狀態在$ state.go如..: $state.go('y')

+0

這是正確的點,如何做到這一點在瀏覽器後退按鈕 – AbKDs