2015-11-15 96 views
0

例如,當前URL是「http://localhost/#/mail」。我做了一些行動,我想去下一個網址:

$location.path("mail/inbox/3") 

它的效果很好。我在另一個控制器與另一個URL。但是,當我點擊「後退」瀏覽器按鈕,我希望能夠返回到「郵件」路線,而不是它,我去了「郵件/收件箱」路線。爲什麼?我該如何解決它?因爲這對我不正確。謝謝。

+0

你確定你不是不小心導航到/ inbox之間?因爲你所說的沒有意義 –

+0

不能。從「郵件」到「郵件/收件箱/:身份證」沒有「郵件/收件箱」 – malcoauri

+0

你能提供一個小提琴來重現這個問題嗎?我在我的應用程序中有類似的情況,它工作得很好 –

回答

1

當你火了這個寶貝:

$location.path("mail/inbox/3") 

不要記得,它通過when('mail')when('mail/inbox')走過達到when('/mail/inbox/:number')。路線從mail -> inbox -> #3開始。這就是爲什麼當你回擊到mail/inbox

這是一個混亂的情況下解決。當事情很簡單時,ng-routerui-router是好的,但隨着應用程序的增長,像你這樣的錯誤是不可避免的。

在我的項目中,我禁用html5Mode$locationProvider.html5Mode(false);,基本上禁用後退按鈕。並在App內添加自定義後退按鈕以供用戶回溯。

該解決方案有助於:

  • 用戶不能使用後退按鈕可言,所以他不能達到不必要的狀態
  • 自定義後退按鈕可以配置或隱藏在倍。基於當前應用程序狀態,事件代碼在相同視圖上進行不同的預處理。
  • 隱藏用戶的應用內部URL以避免應用被用於用戶不應該看到的數據。

我希望這有助於。