前言:最近在写一个基于element + vue 技术的pc端外卖管理系统项目,其中主内容头部区域用到了面包屑的效果,面包屑的文字内容和点击文字跳转到对应得组件页面,要根据路由信息动态生成。在这里呢,将实现思路做个记录。

一、先来看看element上面的面包屑模板

<el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>  //这个to属性是我们在点击首页时会跳转到首页组件<el-breadcrumb-item>活动管理</el-breadcrumb-item><el-breadcrumb-item>活动列表</el-breadcrumb-item><el-breadcrumb-item>活动详情</el-breadcrumb-item>
</el-breadcrumb>

二、由于我们的面包屑是要动态获取数据生成,所以不能像上面那样写死,那这个时候我们需要两个变量,一个变量代表点击文字跳转对应组件的to属性,另一个代表显示的文字内容(title),比如:首页、活动管理。

接下来就定义一个空对象数组


//我们要的对象数组的数据格式应该是下面这样,但是数组里面的内容是后面动态计算生成,所以先定义空数组
//breads:[
//    {to:'/account',title:'账号管理'},
//    {to:'/account/add',title:'账号添加'}
//]export default {data() {return {breads: [], //定义面包屑数组   }}
}

三、删除面包屑多余子项,用v-for遍历breads对象数组,动态生成面包屑子项

<el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-itemv-for="bread in breads":key="bread.title":to="bread.to"> //动态绑定点击跳转路径{{ bread.title }} //动态绑定文字内容</el-breadcrumb-item>
</el-breadcrumb>

四、接下来来了解一下路由信息对象(this.$route)下的matched对象数组,它包含当前路由的所有嵌套路径片段的路由记录,可以用它拿到当前路由的path,那to值就有了,而matched下面每个对象里都有一个meta属性,它是元信息,可以在里面添加我们需要的数据,那title就可以添加在里面

meta需要在项目目录router/index.js里面配置

//订单管理{path: '/order',component: Layout,meta: { title: '订单管理' }, //配置自己的metachildren: [{path: '',component: Order}]},//商品管理{path: '/goods',component: Layout,meta: { title: '商品管理' }, //配置自己metaredirect: '/goods/list',children: [{path: '/goods/list',component: GoodsList,meta: { title: '商品列表' } //配置子菜单的meta},{path: '/goods/add',component: GoodsAdd,meta: { title: '商品添加' } //配置子菜单的meta},{path: '/goods/category',component: GoodsCategory,meta: { title: '商品分类' } //配置子菜单的meta}]},

五、写计算面包屑的函数

 ----------------------------------------------------------------------------------------    // 配置后打印this.$route.matched//点击'订单管理'导航项(没有子菜单的页面)matched:[0:{path:'/order',xxx,...,meta{title:'订单管理'},xxx,...} //存放父导航项信息1:{path:'/order',xxx,...,meta{},xxx,...} //存放子导航项信息]//点击'账号添加'导航项(有子菜单的页面)matched:[0:{path:'/account',xxx,...,meta{title:'账号管理'},xxx,...} //存放父导航项信息1:{path:'/account/add',xxx,...,meta{title:'账号添加'},xxx,...} //存放子导航项信息]----------------------------------------------------------------------------------------实现的代码:methods:{//计算面包屑calcBreads() {//让每一页都可以跳转首页let temp = [{ to: "/home", title: "首页" }];let r = this.$route.matched.filter((v) => v.meta.title) //当点击的是没有子菜单的导航项时,过滤掉matched对象数组中的第二项.map((v) => {return { to: v.path, title: v.meta.title }; //提取path和title生成我们需要的数据格式});this.breads = [...temp, ...r];  //让面包屑以首页开头  => 首页 / 账号管理 / 账号添加}
},created() {//页面刷新时要调用计算面包屑函数this.calcBreads();
},

六、以上方法只有点击导航项时,重新刷新页面后面包屑才正确显示内容。直接点击切换导航项,面包屑的内容显示是不对的,那这个时候需要监听路由路径的变化,调用计算面包屑函数重新计算

 // 侦听器watch: {//页面不刷新的话面包屑的显示文字不会改变,所以要监听路由路径的值状态//监听到路由地址变了(点击菜单)也要调用计算面包屑的函数重新计算"$route.path"() {this.calcBreads();},},

七、当我们在当前组件页面连续点击当前面包屑导航,浏览器会有警告,在项目目录router/index.js重写路由的push就可以消除警告了

// 重写路由的push 解决跳转当前导航的警告
const originPush = VueRouter.prototype.push
VueRouter.prototype.push = function (location) {return originPush.call(this, location).catch(err => err)
}

面包屑效果(element + vue)相关推荐

  1. Vue项目之Element-UI(Breadcrumb)动态面包屑效果

    效果 面包屑作用 面包屑应该是我们在项目中经常使用的一个功能,一般情况下它用来表示我们当前所处的站点位置,也可以帮助我们能够更快的回到上个层级 原始方式 最笨的方法就是在每个需要面包屑的页面中固定写好 ...

  2. vue-router 利用 $route 的 matched 属性实现面包屑效果

    我们以一个固定的路由表来说明 let routes = [{path: '/',component: () => import('../pages/layout/Layout.vue'),chi ...

  3. Vue + ElementUI 动态生成面包屑导航教程

    在Web应用程序中,面包屑导航是一种常用的导航方式,它可以帮助用户更好地理解当前页面的位置和层次关系.在Vue项目中,结合ElementUI组件库,我们可以很容易地实现一个动态生成面包屑导航的功能.本 ...

  4. Vue2面包屑(Breadcrumb)

    Vue3面包屑(Breadcrumb) 可自定义设置以下属性: router的路由数组(routes),必传,默认为[] 面包屑高度(height),默认60px 自定义分隔符(separator), ...

  5. Vue3面包屑(Breadcrumb)

    Vue2面包屑(Breadcrumb) 可自定义设置以下属性: router 的路由数组(routes),必传,类型:Array<{path: string, query?: object, n ...

  6. thinkphp 面包屑导航

    如何实现以下面包屑效果呢 控制器层 <?php namespace Home\Controller; use Think\Controller; class GoodsController ex ...

  7. vue + Element UI 动态Breadcrumb 面包屑的制作

    文章目录 效果 一.路由配置 二.使用步骤 1.Breadcrumb.vue: 2.在页面中使用 总结 效果 面包屑用于显示当前页面的路径,快速返回之前的任意页面. 一.路由配置 代码如下: impo ...

  8. Vue+Element项目实战系列-动态面包屑

    面包屑应该是我们在项目中经常使用的一个功能,一般情况下它用来表示我们当前所处的站点位置,也可以帮助我们能够更快的回到上个层级. 今天我们就来聊聊如何在 Vue 的项目中实现面包屑功能.以下案例都是使用 ...

  9. element实现动态路由+面包屑

    要掌握:localStorage,组件封装 ​​​​ emm,第一次上传视频转gif的图片,效果不咋好... 视频转gif 的软件连接 http://www.zxt2007.com/downloads ...

最新文章

  1. 关于Java中各种修饰符与访问修饰符的说明
  2. 全球芯片行业现状分析:大家都在依赖美国 未来如何破局?
  3. servlet+jdbc+javabean其实跟ssh差不多
  4. [JavaScript]关于div的隐藏
  5. 领域设计基本理论知识总结(转)
  6. JWT-基于token的认证方式
  7. C#与halcon联合开发——内存溢出
  8. 华为做raid5步骤_华为验厂验厂流程如何?主要内容是什么呢?
  9. 排序算法之希尔排序(C/C++)
  10. ZooKeeper启动报错 JAVA_HOME is incorrectly set
  11. linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...
  12. 2010年的一些总结感悟
  13. 软件开发模型优缺点及其适用范围
  14. 7-36 韩信点兵 (10分)
  15. 公司的hr是怎么在被解雇的边缘疯狂试探的
  16. 百家号在电脑上如何查看作者的其它文章
  17. unpacked value/target cannot be used in assignment
  18. 小蚁4K运动相机实现APP通过路由器连接控制拍照
  19. 防范网络钓鱼仍然很重要!
  20. 火热报名 | DockQuery 1.2 beta版本体验官开启招募!

热门文章

  1. wpf写我的世界启动器教程1
  2. 【项目四】圆类Circle
  3. 请教统计对应表字段为空的字段数
  4. 3.19百度移动端 一连三面
  5. 软件测试的各种技术你知道吗?
  6. 利用数据库对四大名著人物信息进行存储
  7. Altium Designer Summer 9 Build 9.4.0.20159下载地址 + 破解补丁
  8. 七夕超多表情包入侵 - 100%提升博客美感(六千粉丝福利)!
  9. 心理实验应用计算机的优缺点,发展心理学研究方法发展的新趋势
  10. 游戏提交已14天,状态仍是waiting for review,谁比我更惨