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 相关文章推荐
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
vue-router命名路由和编程式路由传参讲解
Jan 19 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 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
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
js中的this关键字详解
2013/09/25 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
一行python实现树形结构的方法
2019/08/09 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
Python底层封装实现方法详解
2020/01/22 Python
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
电气技术员岗位职责
2013/11/19 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
乳制品整治工作方案
2014/05/29 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
公司委托书格式范本
2014/09/16 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
对Golang中的FORM相关字段理解
2021/05/02 Golang
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL