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 Array对象基础知识小结
Nov 16 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
javascript中字体浮动效果的简单实例演示
Nov 18 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
JavaScript仿聊天室聊天记录
Dec 27 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
JS实现躲避粒子小游戏
Jun 18 Javascript
JavaScript实现优先级队列
Dec 06 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
第四节--构造函数和析构函数
2006/11/16 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
php实现图片压缩处理
2020/09/09 PHP
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
javascript时间差插件分享
2016/07/18 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
扬尘污染防治方案
2014/06/15 职场文书
杨善洲电影观后感
2015/06/04 职场文书
情人节单身感言
2015/08/03 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书