vue+elementUI动态生成面包屑导航教程


Posted in Javascript onNovember 04, 2019

效果如下所示:

vue+elementUI动态生成面包屑导航教程

项目需要动态生成面包屑导航,并且首页可以点击.其余为路径显示

<el-menu :unique-opened="true" router :default-active="$route.path" @select="handleSelect">
    <div class="user-menu-box" v-for="menu in menus" :key="menu.id">
      <el-menu-item v-if="!menu.child" :index="menu.path">
        <icon :name="menu.icon" :w="20" :h="20"></icon>
        <span slot="title" v-text="menu.name"></span>
      </el-menu-item>
      <el-submenu v-if="menu.child" :index="menu.path">
        <template slot="title">
          <icon :name="menu.icon" :w="20" :h="20"></icon>
          <span slot="title" v-text="menu.name"></span>
        </template>
        <el-menu-item-group>
          <el-menu-item v-for="subMenu in menu.child" :key="subMenu.id" v-text="subMenu.name"
            :index="subMenu.path"></el-menu-item>
        </el-menu-item-group>
      </el-submenu>
    </div>
</el-menu>

上面的代码是elementUI组件的样式,根据项目需要做了修改,搬运的时候根据项目自己改改

export default {
  data () {
    return {
      activeMenu: '',
      indexBreadcrumbs: [],
      menus: [{
        id: '1',
        name: '门户管理',
        icon: 'menhuguanli',
        path: '#2',
        child: [{
          id: '1-1',
          name: '轮播图',
          path: '/backstage/protaManage/turns'
        }, {
          id: '1-2',
          name: '基础数据',
          path: '/backstage/protaManage/basis'
        }, {
          id: '1-3',
          name: '分类管理',
          path: '/backstage/protaManage/classify'
        }, {
          id: '1-4',
          name: '内容发布',
          path: '/backstage/protaManage/content'
        }]
      }, {
        id: '2',
        name: '我的云盘',
        icon: 'yunpan',
        path: '/backstage/yunManage'
      }, {
        id: '3',
        name: '管理菜单',
        icon: 'shezhi',
        path: '/backstage/menusManage'
      }, {
        id: '4',
        name: '编辑板块',
        icon: 'fabuzhongxin',
        path: '/backstage/editPlate'
      }]
    }
  },
  watch: {
    $route () {
      this.handChange()
    }
  },
  computed: {
    breadcrumbList () {
      let breadcrumbs = []
      let menuList = this.menus
      this.indexBreadcrumbs.map(item => {
        for (let i = 0; i < menuList.length; i++) {
          if (item === menuList[i].path) {
            breadcrumbs.push(menuList[i])
            if (menuList[i].child) {
              menuList = menuList[i].child
            }
            break;
          }
        }
      })
      return breadcrumbs
    }
  },
  methods: {
    handChange () {
      this.$emit('hand-change', this.breadcrumbList)
    },
    handleSelect (index, indexPath) {
      this.indexBreadcrumbs = indexPath
    }
  },
  created () {
    this.handChange()
  }
}

上面的代码是模拟的数据,调用elememtUI的组件导航菜单的中的@select方法,有两个参数,可以自行打印

vue+elementUI动态生成面包屑导航教程

然后在computed中计算当前选中的是哪一部分,取到返回值,然后$emit传给父组件,

<el-breadcrumb separator-class="el-icon-arrow-right">
   <el-breadcrumb-item :to="{ path: '/backstage' }">首页</el-breadcrumb-item>
   <el-breadcrumb-item v-for="o in breadcrumbList" :key="o.id">{{o.name}}
   </el-breadcrumb-item>
 </el-breadcrumb>

父组件中取到子组件传过来的值后,直接渲染就行了

Javascript 相关文章推荐
jQuery操作select的实例代码
Jun 14 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
使用变量动态设置js的属性名
Oct 19 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
JS实现图片放大缩小的方法
Feb 15 Javascript
使用grunt合并压缩js和css文件的方法
Mar 02 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
JS三级联动代码格式实例详解
Dec 30 Javascript
原生js实现分页效果
Sep 23 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
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 #Javascript
You might like
PHP与SQL注入攻击[一]
2007/04/17 PHP
介绍php设计模式中的工厂模式
2008/06/12 PHP
php URL编码解码函数代码
2009/03/10 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
javascript模拟订火车票和退票示例
2014/04/24 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
Vue.js用法详解
2017/11/13 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
关于TypeScript模块导入的那些事
2018/06/12 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Django REST framework 分页的实现代码
2019/06/19 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
项目转让协议书
2014/10/27 职场文书
2014年政工师工作总结
2014/12/18 职场文书