动态面包屑

步骤1:首先是在router文件夹下面的index.js下

如果有二级菜单的路由,给一级菜单和二级菜单都要加meta

如果没有二级菜单路由,把一级菜单的path交给儿子,只给二级菜单添加meta

有二级菜单的路由,一级菜单需要重定向一下。

需要的数组 [{path,title},{path,title},{path,title}]

如果是一个一级菜单

 {
        path: '',
        component: Layout,
        children: [{
            path: '/shops',
            meta: {
                title: "店铺管理"
            },
            component: () =>
                import ('@/views/shops/Shops.vue')
        }]
    },

如果是一个二级菜单

 {
        path: '/goods',
        component: Layout,
        redirect: '/goods/goodslist',
        meta: {
            title: "商品管理"
        },
        children: [{
                path: 'goodslist',
                meta: {
                    title: "商品列表"
                },
                component: () =>
                    import ('@/views/goods/GoodsList.vue')
            },
            {
                path: 'goodsadd',
                meta: {
                    title: "商品添加"
                },
                component: () =>
                    import ('@/views/goods/GoodsAdd.vue')
            },
            {
                path: 'goodstype',
                meta: {
                    title: "商品分类"
                },
                component: () =>
                    import ('@/views/goods/GoodsType.vue')
            },
            {
                path: 'goodsedit',
                meta: {
                    title: "商品修改"
                },
                component: () =>
                    import ('@/views/goods/EditGoods.vue')
            },
        ]
    },

步骤2:计算路由

/ 先封装一个函数 处理面包屑导航的函数
            filterBread(){
                let arr = [{path: "/home",title: "后台首页"}];
                this.$route.matched.forEach(item => {
                    if( item.path != "" ){
                        // 不为空的时候才往数组中追加数据
                        arr.push({path: item.path,title: item.meta.title})
                    }
                });
                // 把处理后的数组 赋值给数据
                this.list = arr;
     },

初始化在created生命周期调用一下

// 调用计算面包屑的函数
this.filterBread();

在监听到hash变化的时候,还要计算一下面包屑导航

// 侦听器
        watch: {
            "$route.path"(){
                // 再一次调用计算面包屑的函数
                this.filterBread();
            }
        },

步骤3.渲染面包屑

 <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item v-for="(item,index) in list" :key="index" :to="{ path: item.path }">{{item.title}}</el-breadcrumb-item>
    </el-breadcrumb>


版权声明:本文为weixin_45630548原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。