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 相关文章推荐
JS对象与JSON格式数据相互转换
Feb 20 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
jquery移动节点实例
Jan 14 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
Jan 20 Javascript
基于jquery.page.js实现分页效果
Jan 01 jQuery
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
js实现点击生成随机div
Jan 16 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
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 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PDO::_construct讲解
2019/01/27 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python类装饰器实现方法详解
2018/12/21 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
高考自主招生自荐信
2013/10/20 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
初一科学教学反思
2014/01/27 职场文书
《金子》教学反思
2014/04/13 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
金砖之国观后感
2015/06/11 职场文书
安全生产会议制度
2015/08/06 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
浅析NIO系列之TCP
2021/06/15 Java/Android
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android