【发布时间】:2017-01-20 08:34:11
【问题描述】:
我使用 router.beforeEach 来保护某些视图。我在进入我的 vue 之前获取我的用户。我想在所有经过身份验证的页面中使用此用户。如何在我的 vuejs 组件中注入 router.beforeEach 中的数据?
这是我的路线定义:
import Vue from 'vue';
import VueRouter from 'vue-router';
import AuthService from './services/AuthService';
import Index from './pages/Index.vue';
Vue.use(VueRouter);
const routes = [
{path: '/', name: 'index', component: Index, meta: {requiresAuth: true}},
...
];
const router = new VueRouter({
routes
});
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
AuthService().getUser(user => {
if (user) {
next(vm => {
vm.user = user
});
} else {
...
}
});
}
...
});
export default router;
这里是我的 Index.vue
<template>
<div>
{{user}}
</div>
</template>
<script type="text/ecmascript-6">
export default {
data(){
console.log(this.user);
console.log(this.$route.user);
return {}
},
mounted(){
console.log(this.user);
console.log(this.$route.user);
}
}
</script>
一切都未定义
我不想在我的组件中创建beforeRouteEnter,因为它会进行第二次 API 调用。
【问题讨论】:
-
你在使用 Vuex 商店吗?
-
@TusharArora 如果在 vue-router 中没有解决方案,我将使用 vuex。我现在尽量避免使用 vuex。
-
你的代码对我来说工作正常
标签: vuejs2 vue.js vue-router