在vue項目中使用vue-router作路由,作到返回頁面的邏輯時,因爲window.history.back知足不了返回的須要,故想經過vue
window.addEventListener('popstate', function(event) {}) 解決,無耐該事件執行的次數不固定,不知什麼緣由,反正沒找出來。vue-router
頁面的跳轉邏輯是,首頁跳A頁面,而後A頁面觸發事件跳轉到B頁面,B頁面提交後再跳到A頁面,這時候你點擊返回按鈕的時候返回的路徑依次是:A->B->A->首頁,而想要的效果是在最後B跳A的這個頁面中,點擊返回按鈕跳到首頁。session
假設首頁的路徑爲'/index',A頁面的路徑爲'/coupon',B頁面的路徑爲'/couponAdd',實現以下:函數
一開始是想在beforeRouteLeave中作判斷,,這樣判斷出現問題了,若是一開始從A頁面跳轉到B頁面的話,from.fullPath=='/coupon'&&to.fullPath=='/couponAdd' 爲true,也就是它也會跳轉到首頁,不會跳轉到B頁面。而後我又想到了另外下個函數,route的beforeRouteEnter,而後在data中添加一個屬性,用來作判斷,,無耐它不能獲取組件實例,再想。this
通過再次思考我決定用sessionStorage存儲數據,代碼以下:3d
backFlag就是用來判斷是不是從B跳轉到A,若是是就把它置爲true,而後在beforeRouteLeave時再判斷根據該值跳轉,若是它爲false,說明是從A跳轉到B,就跳轉唄,若爲true的話,說明它是從B跳轉到A,而後再點擊的返回,此時this.$router.push({path:'/index'});直接跳轉到首頁,問題解決。router