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 相关文章推荐
Javascript 键盘keyCode键码值表
Dec 24 Javascript
比较搞笑的js陷阱题
Feb 07 Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
JavaScript中子对象访问父对象的方式详解
Sep 01 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
React组件中的this的具体使用
Feb 28 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
vue中的循环对象属性和属性值用法
Sep 04 Javascript
Vue的生命周期一起来看看
Feb 24 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
Python星号*与**用法分析
2018/02/02 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
html5 标签
2009/07/16 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
新闻专业个人求职信
2013/12/19 职场文书
客服部班长工作责任制
2014/02/25 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
老公保证书
2015/01/17 职场文书
争先创优个人总结
2015/03/04 职场文书
简历中自我评价范文
2015/03/11 职场文书
意外事故赔偿协议书
2016/03/22 职场文书