详解基于iview-ui的导航栏路径(面包屑)配置


Posted in Javascript onFebruary 22, 2019

起因

上家公司的后台管理系统都是刷表刷出来的,所用很久很久没写后台管理系统了。换了工作后总算要开始捣腾router了,很久没用都快忘光了,所以把一些通用的模块记录一下,也分享给需要的朋友们。

经过

//router.js
let routes = [
  {
    path: '/',
    redirect: '/admin',
  },
  {
    path: '/login',
    name: 'login',
    meta: {title: '登录'},
    component: () => import('./components/login.vue')
  },
  {
    path: '/admin',
    name: 'admin',
    meta: {title: '主页'},
    component: () => import('./components/admin.vue'),
    children: [
      {
        path: 'operation',
        name: 'operation',
        meta: {title: '运营管理'},
        component: () => import('./components/admin/operation.vue')
      },
      {
        path: 'order',
        name: 'order',
        meta: {title: '订单中心'},
        redirect: 'order/index',
        component: () => import('./components/admin/order.vue'),
        children: [
          {
            path: 'index',
            name: 'index',
            meta: {title: ''},
            component: () => import('./components/admin/ordercenter.vue')
          },
          {
            path: 'detail',
            name: 'detail',
            meta: {title: '订单详情'},
            component: () => import('./components/admin/orderdetail.vue')
          },
        ]
      },
    ]
  },
]

export default routes

这个是我部分的router路径配置表

/*面包屑路径处理*/
 eve_breadcrumbItem_change(){
        var list = this.$route.fullPath.split('/')//list[0]:是空格
        this.BreadcrumbItem = []
        function fn(obj, arr, index,self) {
          if (obj.hasOwnProperty('children')&&obj['children'].length>0) {
            for (let one of obj.children) {
              if (one.name != 'index' && one.name == arr[index]) {
                self.BreadcrumbItem.push({'title': one.meta.title, 'path': list.slice(0,index+1).join('/')})
                return one.hasOwnProperty('children')&&one['children'].length>0?fn(one,arr,index+1,self):false
              }
            }
          }
        }
        for(let one of this.$router.options.routes){
          if(one.hasOwnProperty('name')&&one.name == list[1]){
            this.BreadcrumbItem.push({'title': one.meta.title, 'path': one.path})
            fn(one,list,2,this)
          }
        }
      }

这个是就是本文的重点,其实也简单,就是递归了下路径名重新组装了下数据给面包屑传过去

watch: {
  '$route'(to, from) {
    this.eve_breadcrumbItem_change()
  }
},
...
mounted() {
  this.eve_breadcrumbItem_change()
},

使用也简单,无非watch检测下路径变化,避免刷新页面时没路径,在mounted里再调用一下。

结果

结果嘛,自然就解决问题。不过路径的配置可能会和大家的不同,我喜欢在分组下默认弄个index路径,我觉得这样结构比较好,这里大家注意下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
文字幻灯片
Jun 26 Javascript
Javascript中暂停功能的实现代码
Mar 04 Javascript
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
js加减乘除丢失精度问题解决方法
May 16 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
分享一些常用的jQuery动画事件和动画函数
Nov 27 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
浅谈Vue 初始化性能优化
Aug 31 Javascript
Openlayers显示地理位置坐标的方法
Sep 28 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 #Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 #Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 #Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 #Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 #Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 #Javascript
You might like
用PHP实现验证码功能
2006/10/09 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
初婚未育证明
2014/01/15 职场文书
信息技术课后反思
2014/04/27 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers