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控制上传文件的大小
Oct 26 Javascript
javascript 多浏览器 事件大全
Mar 23 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 Javascript
JavaScript 闭包的使用场景
Sep 17 Javascript
详解webpack的clean-webpack-plugin插件报错
Oct 16 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 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
SONY ICF-F10中波修复记
2021/03/02 无线电
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
js单词形式的运算符
2014/05/06 Javascript
javascript如何写热点图
2015/12/08 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
Python中itertools模块用法详解
2014/09/25 Python
python简单获取数组元素个数的方法
2015/07/13 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
python3 xpath和requests应用详解
2020/03/06 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
在什么时候需要使用"常引用"
2015/12/31 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
生产部主管岗位职责
2014/01/06 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
大学军训感言400字
2014/03/11 职场文书
读书活动总结
2014/04/28 职场文书
2014年质检工作总结
2014/11/26 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis