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 相关文章推荐
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 Javascript
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
引用外部脚本时script标签关闭的写法
Jan 20 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
JS实现图片平面旋转的方法
Mar 01 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
微信小程序实现展示评分结果功能
Feb 15 Javascript
jquery获取input输入框中的值
Nov 13 jQuery
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获取301跳转URL简单实例
2013/12/16 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
小学生自我鉴定
2013/10/12 职场文书
实习生个人找工作的自我评价
2013/10/30 职场文书
计划生育标语
2014/06/23 职场文书
慰问信范文
2015/02/14 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
入党转正申请书范文
2019/05/20 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript