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高级程序设计 扩展--关于动态原型
Nov 09 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
Nov 28 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
Feb 13 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
原生JS实现汇率转换功能代码实例
May 13 Javascript
ES11屡试不爽的新特性,你用上了几个
Oct 21 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 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/10/09 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
js编写选项卡效果
2017/05/23 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
保险经纪人求职信
2014/03/11 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
积极向上的团队口号
2014/06/06 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
领导工作表现评语
2015/01/04 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
公开致歉信
2019/06/24 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers