vue.js - 为什么没有添加路由 $router.addRoutes?
问题描述
为什么没有添加路由$ router.addRoutes?我尝试了我做不到的一切
async loadMenu() {
try{
let res = await this.$http.get('/menu')
this.menuItems = res.data
res.data.forEach((e) => {
this.$router.addRoutes([
{
path: /${e.url},
name: ${e.name},
component: require(`${e.compURL}`)
},
])
console.log(e)
})
}catch(err){
console.log(err)
}
},
我不明白为什么不添加动态路由?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
const router = new Router({
routes: [
{
path: '/',
name: 'home',
component: Home,
meta: {
title: 'EHZ',
layout: 'default-layout',
catId: 1
}
},
],
mode: 'history',
// base: locale,
})
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth) {
Vue.axios.post('/auth/token')
.then((res) => {
if ( res.status === 200 )
next()
})
.catch((e) => {
store.dispatch('logout')
next({ path: '/auth/login'})
})
}
else {
next()
}
})
export default router;
我从 router.js 添加了代码。还有什么需要展示的吗?
我添加了一张我在res.data中得到的图片
解决方案
好吧,您可以按照以下方式实现它
在 header.vue 文件中
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<router-link to="/">Home</router-link>
<div v-for="menu in dynamic" :key="menu.path">
<router-link :to="menu.path">{{menu.name}}</router-link>
</div>
</div>
</template>
<script>
import About from "@/components/About";
import Contact from "@/components/Contact";
export default {
name: "Header",
data: function() {
return {
msg: "Header Component!",
dynamic: [
{
name: "About",
component: "About",
path: "/about"
},
{
name: "Contact",
component: "Contact",
path: "/contact"
}
]
};
},
created() {
console.log("inside created");
const routes = this.routerFormat(this.dynamic);
console.log("routes ", routes);
this.$router.addRoutes(routes);
},
methods: {
routerFormat: function rFormat(routers) {
console.log("inside routerFormat");
if (!(routers instanceof Array)) {
return false;
}
let fmRouters = [];
routers.forEach(router => {
let { path = "/404", component = "Error", name, children } = router;
path = path || "";
component = component || "Error";
if (children && children instanceof Array) {
children = rFormat(children);
}
console.log("component", component);
let fmRouter = {
path: path,
component: About, // Import about page in the top
//component: () => import(`./${name}.vue`).then(m => m),
name: name,
children: children
};
console.log(fmRouter);
fmRouters.push(fmRouter);
});
console.log("fmRouters", fmRouters);
return fmRouters;
},
addRoutes() {}
}
};
</script>
希望能帮助到你!
推荐阅读
- python - 如何使用 tkinter 使用 lambda 创建 0-9 数字按钮?
- ruby-on-rails - rails partial 不处理本地人
- linux - 使用条件取消注释范围内的行
- html - 如何划分我的 html 页面以显示带有浮动侧面板的地图和标题栏
- react-native - 开发者菜单没有`Debug JS Remotely`?
- ggplot2 - gganimate 返回 .png 文件,但没有动画对象
- android - 如何创建一个等效于具有不同大小资产的多个 APK 的 Android App Bundle?
- javascript - Vue 引用名称可以包含空格吗
- javascript - Javascript 处理长度可能为一个元素的数组的最佳方法
- delphi - Delphi cxtreelist 遍历节点