基于Vue生成动态路由树

基于Vue生成动态路由树

创建MenuTree.vue文件

<template>
  <div>
    <template v-for="item in this.menuList">
      <el-submenu
        :index="item.menuId+''"
        v-if="item.type==true"
        :key="item.menuId+''"
        :disabled="!item.available"
      >
        <template slot="title" style="padding-left: 10px">
          <i :class="item.icon"></i>
          <span slot="title">{{item.menuName}}</span>
        </template>
        <MenuTree :menuList="item.childMenus"></MenuTree>
      </el-submenu>
      <el-menu-item
        v-else
        :disabled="!item.available"
        :index="item.url+''"
        :route="item.url"
        :key="item.menuId+''"
        style="padding-left: 50px;"
        @click="savePath(item.url)"
      >
        <i :class="item.icon"></i>
        <span>{{item.menuName}}</span>
      </el-menu-item>
    </template>
  </div>
</template>

在home.vue中引入MenuTree组件

<!--  菜单    -->
      <el-aside :width="isCollapse?'64px':'200px'">
        <div class="toggle-btn" @click="toggleMenu">|||</div>
        <el-menu
          class="el-menu-vertical-demo"
          :collapse="isCollapse"
          :router="true"
          :default-active="activePath"
          background-color="#001529"
          :collapse-transition="false"
          text-color="rgba(255,255,255,0.7)"
          unique-opened
        >
          <MenuTree :menuList="this.menuList"></MenuTree>
        </el-menu>
      </el-aside>
      
import MenuTree from "../components/MenuTree";
export default {
	  components: {
	    MenuTree,
	  },
  }
 async getMenuList() {
      //获取头信息
      let header = this.$store.state.userInfoVO.token;
      menus(header).then((res) => {
        if (res.code !== 200) {
          return this.$message.error("获取菜单信息失败:" + res.message);
        }
        this.menuList = res.data;
      });
    },

后端实现:https://blog.csdn.net/weixin_42339552/article/details/108253829

想要获取对应的资料,关注下方公众号留言即可。

Alt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
动态路由指的是可以根据一些参数或者数据动态生成的路由,Vue Router提供了很好的支持。以下是一个基于Vue Router 3.6.0的动态路由示例代码: ```javascript // 在router/index.js中定义动态路由 import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' Vue.use(VueRouter) const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/user/:id', name: 'User', component: () => import(/* webpackChunkName: "user" */ '../views/User.vue') }, { path: '/post/:id', name: 'Post', component: () => import(/* webpackChunkName: "post" */ '../views/Post.vue') }, { path: '/404', name: '404', component: () => import(/* webpackChunkName: "notfound" */ '../views/NotFound.vue') }, { path: '*', redirect: '/404' } ] const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }) export default router ``` 在上述示例中,我们定义了三个动态路由: - `/user/:id` 表示用户详情页面,`:id`为动态参数,可以是任意字符串或数字,例如 `/user/123`。 - `/post/:id` 表示文章详情页面,`:id`同样为动态参数,例如 `/post/456`。 - `/404` 表示404页面。 在组件中,我们可以通过 `$route` 对象获取当前路由的动态参数: ```vue <template> <div> <h1>User Detail</h1> <p>User ID: {{ $route.params.id }}</p> </div> </template> ``` 在上述示例中,我们通过 `$route.params.id` 获取了当前路由的动态参数。同样的方法也适用于文章详情页面 `/post/:id`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值