其实我想在beforeEach这个钩子函数里面做登录验证,而这个登录验证会调后台接口,但是这个钩子函数里面获取不到vm的实例,这样我就无法取得store里的token,也无法请求后台,折腾了一早上,实在没找到解决方法,只能请求大家指点一二
相关代码
Router.vue
<script>
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import Api from '@/components/config/Api'
import home from '@/pages/index'
import login from '@/pages/login'
import info from '@/pages/info'
const router = new VueRouter({
routes: [{
path: '/',
name: 'index',
component: home
},{
path: '/login',
name: 'login',
component: login
},{
path: '/info',
name: 'info',
component: info
}],
});
router.beforeEach((from, to, next) => {
this.$http.get(Api.is_login_uri,{params: {"1":this.$store.state.token}}).then(function(res){
let code = res.data.code;
if(code != "0"){
next({path:'/info',params:{"msg":res.data.data}});
}
},function(error){
next({path:'/info',params:{"msg":"请求验证登录出了问题"}});
});
})
export default router;
</script>
main.js的代码
import router from './components/config/Router'
import store from './components/config/Store'
// 导入 pages 下的 Home.vue
//import index from './pages/index'
// 创建 Vue 实例*
var vm = new Vue({
el: '#app',
router,
store,
data(){
return {
}
},
created(){
document.title=this.Global.appName;
}
})
你在路由router.js里引入你的store.js试试哦