从我的服务访问路由器实例

rid*_*nsb 10 vue.js vue-router

我创建了一个auth服务(src/services/auth.js),只有函数和属性..

export default {
    login() { ... }
    ...
}
Run Code Online (Sandbox Code Playgroud)

在内部login功能,我需要重定向用户

router.go(redirect)
Run Code Online (Sandbox Code Playgroud)

如何检索路由器实例


上下文

在我的src/main.js文件中,我创建了一个路由器..

import VueRouter from 'vue-router'
Vue.use(VueRouter)
import route from './routes'
const router = new VueRouter({
  history: false,
  linkActiveClass: 'active'
})
route(router)

const App = Vue.extend(require('./App.vue'))
Run Code Online (Sandbox Code Playgroud)

在我src/routers.js的地图路线

export default function configRouter (router) {
    router.map({ .. })
}
Run Code Online (Sandbox Code Playgroud)

Pan*_*lis 14

您应该导出router实例,然后将其导入auth.js服务.

这是我的解决方法,有一些改进:

SRC/routes.js

export default {
  '/': {
    component: {...}
  },
  '/about': {
    component: {...}
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

SRC/router.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Routes from './routes'

Vue.use(VueRouter)

const router = new VueRouter({...})

router.map(Routes)

// export the router instance
export default router
Run Code Online (Sandbox Code Playgroud)

SRC/main.js

import Router from './router'
import App from './app'

Router.start(App, '#app')
Run Code Online (Sandbox Code Playgroud)

SRC /服务/ auth.js

import Router from '../router'

export default {
  login () {
    // redirect
    Router.go('path')
  }
}
Run Code Online (Sandbox Code Playgroud)

  • Vue.use()是否会创建与下一行创建的vue-router不同的vue-router实例? (3认同)