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 中几个类选择器的简单使用介绍
Mar 14 Javascript
JS自动适应的图片弹窗实例
Jun 29 Javascript
JQuery标签页效果实例详解
Dec 24 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
Vue.js实例方法之生命周期详解
Jul 03 Javascript
js读取本地文件的实例
Dec 22 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
vue router动态路由设置参数可选问题
Aug 21 Javascript
javascript实现点亮灯泡特效示例
Oct 15 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
Sep 22 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 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 一个随机字符串生成代码
2010/05/26 PHP
php cli换行示例
2014/04/22 PHP
微信支付开发发货通知实例
2016/07/12 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
javascript截取字符串小结
2015/04/28 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
详解Python中的条件判断语句
2015/05/14 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python装饰器深入学习
2018/04/06 Python
python实现推箱子游戏
2020/03/25 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python 使用type来定义类的实现
2019/11/19 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
商务主管岗位职责
2013/12/08 职场文书
高三语文教学反思
2014/01/15 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
Python中的socket网络模块介绍
2022/07/23 Python