我正在使用Vue2和Vue-router(版本^ 2.2.0)開發應用程序,並且後退和前進導航按鈕必須顯示用戶是否可以返回/轉發還是不轉發。檢查使用vue-router時是否可以前進
要檢查用戶是否可以返回它很簡單:如果用戶不在主屏幕上,他可以。
問題出現在檢查用戶是否可以繼續前進時,因爲我需要檢查路由器的歷史記錄,但我一直無法這樣做。
有沒有辦法來檢查路由器是否有「要去router.go(1)時去的地方」?
我正在使用Vue2和Vue-router(版本^ 2.2.0)開發應用程序,並且後退和前進導航按鈕必須顯示用戶是否可以返回/轉發還是不轉發。檢查使用vue-router時是否可以前進
要檢查用戶是否可以返回它很簡單:如果用戶不在主屏幕上,他可以。
問題出現在檢查用戶是否可以繼續前進時,因爲我需要檢查路由器的歷史記錄,但我一直無法這樣做。
有沒有辦法來檢查路由器是否有「要去router.go(1)時去的地方」?
Web應用程序? router.go(n)
是history.go(n)
,所以它與此相同。將個人歷史暴露給網站是不安全的。此外,僅僅因爲他們在家裏並不意味着他們不能回去,僅僅因爲用戶可以前進並不意味着它會導航到您的應用中的某些東西。如果您試圖複製向前和向後按鈕,您將會遇到不愉快的時間。
如果它不是一個web應用程序,那麼你需要手動跟蹤用戶的歷史和拼接,並像瀏覽器一樣進行替換和推送。
這不是一個網絡應用程序,它是Android,iOS,Windows和OSX的混合應用程序。爲什麼我應該「拼接並替換並推送」? – Potray
你需要保存一個歷史數組,如'[{path:'/ foo',active:true | false}]'。當您前往不同的路徑並將新條目設置爲活動狀態時,您會推送它。然後,當按下後退或前進按鈕時,您需要沿着正確的方向'router.replace(nextUrl)'並將其設置爲true。但是,由於它只是一個應用程序,您可能不想要真正的後退/前進瀏覽器行爲。你確定你不想更像「後退/前進帶你通過麪包屑/層次結構」類型的情況。 –
現在後退按鈕按預期工作:如果當前屏幕不是主屏幕,它只會調用router.go(-1)。我沒有在任何地方使用router.replace。你建議的方法是包裝路由器,不要調用router.go不是嗎? – Potray
在vue-router v2.2.0最新版本中,路由器的onComplete和onAbort回調函數.push'方法,作爲第二個和第三個參數: 'router.push(location,onComplete,onAbort)'。我不是100%肯定這會工作,但你可以嘗試使用這些回調.. –
這將無法正常工作,因爲我也需要在router.go這些回調。 – Potray