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 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
Sep 28 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
Java Varargs 可变参数用法详解
Jan 28 Javascript
vue实现广告栏上下滚动效果
Nov 26 Vue.js
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多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
JS实现留言板功能
2017/06/17 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python 数据的清理行为实例详解
2017/07/12 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
技校生自我鉴定
2013/12/08 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
赢在执行观后感
2015/06/16 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis