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浮点数运算出现Bug的方法
Mar 12 Javascript
封装的jquery翻页滚动(示例代码)
Nov 18 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
May 27 Javascript
jquery操作checked属性以及disabled属性的多种方法
Jun 20 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
Sep 16 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模拟QQ登录的方法
2015/07/29 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
php命令行模式代码实例详解
2021/02/26 PHP
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
详解easyui 切换主题皮肤
2019/04/04 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
python 的列表遍历删除实现代码
2020/04/12 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
python基础梳理(一)(推荐)
2019/04/06 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
大型活动策划方案
2014/01/12 职场文书
中学生寄语大全
2014/04/03 职场文书
法制教育演讲稿
2014/09/10 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2014年女职工工作总结
2014/11/27 职场文书
幼儿园教师求职信
2015/03/20 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书