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 相关文章推荐
utf-8编码引起js输出中文乱码的解决办法
Jun 23 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
Jan 23 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
May 08 Javascript
页面载入结束自动调用js函数示例
Sep 23 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
详解javascript appendChild()的完整功能
Aug 18 Javascript
koa2实现登录注册功能的示例代码
Dec 03 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
Mar 31 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 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
数字转英文
2006/12/06 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
JavaScript效率调优经验
2009/06/04 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
Python使用三种方法实现PCA算法
2017/12/12 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Django 视图层(view)的使用
2018/11/09 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
使用Python封装excel操作指南
2021/01/29 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
华为C++笔试题
2014/08/05 面试题
人力资源主管职责范本
2014/03/05 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
财产保全担保书
2015/01/20 职场文书
2015年工程部工作总结
2015/04/30 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
Java线程的6种状态与生命周期
2022/05/11 Java/Android
Nginx利用Logrotate实现日志分割
2022/05/20 Servers