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 相关文章推荐
重定向实现代码
Nov 20 Javascript
javascript操作文本框readOnly
May 15 Javascript
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
jquery编写Tab选项卡滚动导航切换特效
Jul 17 Javascript
JavaScript数组实现数据结构中的队列与堆栈
May 26 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
自定义事件解决重复请求BUG的问题
Jul 11 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
May 31 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
原生js实现购物车
Sep 23 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
终于听上了直流胆调频
2021/03/02 无线电
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
班级入场式解说词
2014/02/01 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
班组长岗位职责
2014/03/03 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
一年级学生期末评语
2014/04/21 职场文书
促销活动总结报告
2014/04/26 职场文书
竞聘上岗演讲
2014/05/19 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
班级联欢会主持词
2015/07/03 职场文书
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript