Vue 解决多级动态面包屑导航的问题


Posted in Javascript onNovember 04, 2019

固定路由的面包屑导航

我们在配置router的时候,可以将面包屑数据配置在meta中,

例如

路由配置:

{
  path: '/project/process/:id',
  name: 'process',
  component: () => import('@/views/project/process/main.vue'),
  meta: [
    { name: '项目管理列表' },
    { name: '项目列表', url: '/project/list' },
    { name: '里程碑' },
  ],
},

代码:

<el-breadcrumb separator-class="el-icon-arrow-right">
 <el-breadcrumb-item v-for="(item, index) in $route.meta" :key="index">
    <router-link v-if="item.url" :to="item.url">{{item.name}}</router-link>
    <a v-else>
      {{item.name}}
    </a>
  </el-breadcrumb-item>
</el-breadcrumb>

如果单纯的是展示,就可以不用写url链接,路由配置成这样

{
  path: '/project/process/:id',
  name: 'process',
  component: () => import('@/views/project/process/main.vue'),
  meta: [‘项目管理', '项目进度', '里程碑'],
},

然后代码:

<el-breadcrumb separator="/">
  <el-breadcrumb-item :to="{path: '/home'}">首页</el-breadcrumb-item>
  <el-breadcrumb-item v-for="(item, index) in $route.meta" :key="index">
  {{item}}
  </el-breadcrumb-item>
</el-breadcrumb>

解决Vue多级动态面包屑导航

针对一些比较固定式的面包屑是很好实现的,但是我们在项目中经常会遇到一些动态路由,

例如: A页面路由为 /list

从A页面跳转到B页面为 /list/:id

B页面下又存在一个字页面, /list/detail

我们在C页面想通过面包屑导航的方式进入B页面怎么办呢?

针对这种动态嵌套多级路由应该怎么处理呢?

配置路由

...
{
  path: '/type',
  name: 'type',
  component: () => import('@/views/type/main.vue'),
  meta: [
    { name: '项目分类' },
  ],
},
{
  path: '/type/list/:id',
  name: 'list',
  component: () => import('@/views/list/type/main.vue'),
  meta: [
    { name: '项目分类', url: '/list' },
    { name: '项目列表' },
  ],
},
{
  path: '/list/detail',
  name: 'detail',
  component: () => import('@/views/type/list/detail/index.vue'),
  meta: [
    { name: '项目分类', url: '/list' },
    { name: '项目列表', url: '/type/list' },
    { name: '详情' },
  ],
},
...

可以看出这个路由没有什么区别,唯一值得注意的一点就是里详情页面,是一个动态的路由,从详情页面跳转到项目列表我们需要相应的id信息,但是此时id我们不能固定填入,而是一个动态的值。

修改detail页面

在milestone页面监听beforeRouteEnter事件

beforeRouteEnter(to, from, next) {
  const meta = to.meta;
  for (let i = 0; i < meta.length; i++) {
    if (meta[i].name === '项目列表') {
      meta[i].url = `/type/list/${from.params.id}`;
    }
  }
  next();
  },

在beforeRouteEnter事件中修改meta信息,从而更新面包屑的导航路由。

主要的实现思路就是在目标页面添加beforeRouteEnter事件,然后更改其meta配置信息,从而达到更改面包屑导航路径。

如果你还有更好的解决办法,欢迎留言。

以上这篇Vue 解决多级动态面包屑导航的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js宝典学习笔记(上)
Jan 10 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
Mar 29 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
vue+elementUI动态生成面包屑导航教程
Nov 04 #Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 #Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 #Javascript
vue双向绑定数据限制长度的方法
Nov 04 #Javascript
使用p5.js临摹动态图片
Nov 04 #Javascript
p5.js绘制创意自画像
Nov 04 #Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 #Javascript
You might like
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
详解python Todo清单实战
2018/11/01 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
最新个人职业生涯规划书
2014/01/22 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
人事任命书范文
2014/06/04 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA