鍍金池/ 問答/HTML/ vue router 非組件之間跳轉

vue router 非組件之間跳轉

要實現(xiàn)在的項目功能

我需要在我自己登錄網(wǎng)關做一個判斷
我封裝了一個axios 而這個涵數(shù)庫每一次都會請求后端網(wǎng)絡并返回狀態(tài)碼
當返回狀態(tài)為:“登錄超時” 時 我router跳轉 而不是window.location='/login'

相關代碼

import Vue from 'vue'
import router from 'vue-router'
import axios from 'axios';

Vue.prototype.$ajax = axios
//這個是我封裝的一個axios
export default function(url,data={}){
    ...這里做一些網(wǎng)絡請求使用...
    if(登錄超時){
        ...router跳轉...//如果在這里進行跳轉
        /*router.push('無效')*/
    }
}
回答
編輯回答
笨小蛋

封裝的文件是不是在單獨的 js 文件中,你可能需要把 router 引進去才能用 router.push

import {router} from '@/router/index'

router/index.js

import Vue from 'vue'
import iView from 'iview'
import VueRouter from 'vue-router'
import Cookies from 'js-cookie'
import { routers } from './router'

Vue.use(VueRouter)

const RouterConfig = {
  mode: 'history',
  routes: routers
}

export const router = new VueRouter(RouterConfig)

你需要的是 new VueRouter 后的這個對象。

2017年8月28日 13:08
編輯回答
瞄小懶

此處的router是并不是import Router from 'vue-router'的Router依賴.
它實際上是路由進行統(tǒng)一管理后導出的一個router對象.

// router.js
import Router from "vue-router";
import Home from 'Home.vue'
Vue.use(Router);

// 導出的router
export default new Router({
    routes: [
        {
          path: "/",
          name: "home",
          component: Home,
          children: [
            {
              path: "/a",
              name: "a",
              component: A
            }
        ]
})

在你需要的頁面上,通過引入這樣的對象實例,然后使用router.push方法

// 需要調(diào)用的js文件
// 引入router.js的對象
import router from 'router.js'
...
...
func(){
...
    router.push('/');
...    
}

2017年11月14日 18:15