該應用程序有頁面,X
,Y
和Z
。因此,路由應如下進入頁面X
,然後選擇一些細節,然後轉到頁面Y
,然後選擇一些更多細節,然後轉到Z
。所以我希望在進入Z
頁面後,我點擊窗口後退按鈕,它應該轉到頁面X
而不是頁面Y
。從Y
到Z
,我也嘗試在$state.go
中加入{ location: 'replace' }
,但它不起作用。任何想法如何實現?ui路由器改變以前的狀態
感謝
該應用程序有頁面,X
,Y
和Z
。因此,路由應如下進入頁面X
,然後選擇一些細節,然後轉到頁面Y
,然後選擇一些更多細節,然後轉到Z
。所以我希望在進入Z
頁面後,我點擊窗口後退按鈕,它應該轉到頁面X
而不是頁面Y
。從Y
到Z
,我也嘗試在$state.go
中加入{ location: 'replace' }
,但它不起作用。任何想法如何實現?ui路由器改變以前的狀態
感謝
每次你改變的狀態,角度會觸發一個事件稱爲$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');
}
});
});
瀏覽器後退按鈕基本觸發同樣的事件,以便您的問題將與此得到解決。
它的工作感謝男人:) – AbKDs
簡單的解決方案是隻有2個狀態,X和Z.當你在X頁面上選擇一些細節並轉到Y時,而不是使用'ui.router'去到Y,隱藏當前div並顯示div那裏有Y的內容。然後在選擇更多的細節時,使用'ui.router'去Z. – AdityaParab
@AdityaParab,我需要一個不同的頁面'Y' – AbKDs
你的意思是'page',因爲它必須有一個路線? – AdityaParab