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的分页控件(C#)
Jan 06 Javascript
js style动态设置table高度
Oct 21 Javascript
javascript模拟命名空间
Apr 17 Javascript
jQuery常用且重要方法汇总
Jul 13 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
Nov 29 Javascript
原生JS实现左右箭头选择日期实例代码
Mar 14 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
JS闭包经典实例详解
Dec 20 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 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 设计模式之 工厂模式
2008/12/19 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python图书管理系统
2020/04/05 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
python里dict变成list实例方法
2019/06/26 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
书香校园活动方案
2014/02/28 职场文书
同学会邀请函模板
2015/01/30 职场文书