vue+elementUI 做的递归组件
废话少说,直接上最新鲜的干货
当然,你得提前安装好bootstrap,router,element-ui,vue-axios
1.上递归组件,此处参考了某位大神的代码,具体不知道是谁,因为到处都有人用
<template>
<div> <template v-for='menu in menuList'>
<!-- 如果当前有子菜单,则显示 el-submenu ,在el-subment 里调用 递归组件 -->
<el-submenu
v-if='menu.children.length>0'
:index='menu.name'
:key="menu.id"
>
<template slot="title" >
<i :class="menu.icon"></i>
{{menu.name}}
</template>
<!-- 调用自身 此处是重点--> <MenuTree :menuList='menu.children'></MenuTree> </el-submenu>
<!-- 如果没有子菜单,则显示当前内容 -->
<el-menu-item
v-else
:index='menu.url'
:key='menu.id'
>
<i :class="menu.icon"></i>
{{menu.name}}
</el-menu-item> </template>
</div>
</template> <script>
export default {
name: "MenuTree",
props: {
menuList: {
type: Array,
required: false
}
}
}
</script> <style scoped> </style>
2.子组件菜单(Menus)
<template>
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu
router
mode="vertical"
background-color="#551A8B"
text-color="#FFFFFF"
active-text-color="#409EFF"
v-if="menuList"
>
<!-- <sidebar-item v-for="menu in menuList" :key="menu.id" :item="menu" />-->
<MenuTree :menuList="menuList"></MenuTree>
</el-menu>
</el-scrollbar>
</template>
<script>
import MenuTree from "./MenuTree";
export default {
name:'Menus',
components: {
MenuTree,
},
props:{
menuList: {
type: Array,
required: false
}
}
}
</script>
<style >
a {
display: inline-block;
width: 100%;
overflow: hidden;
}
.el-menu {
border: none;
height: 100%;
width: 100% !important;
}
.is-active > .el-submenu__title{
color: #f4f4f5!important;
}
</style>
3.父组件(App.Vue)引用
<template>
<el-container>
<el-header>
XXXXXX
</el-header>
<el-container>
<el-aside >
<Menus :menuList="menuList"></Menus>
</el-aside>
<el-main>
<router-view></router-view>
</el-main>
</el-container>
</el-container>
</template> <script>
import Menus from "./views/Menus"; export default {
name: 'app',
components: {
Menus,
}, props: {
menuList: {
type: Array,
required: false
}
},
mounted(){
this.axios.get('/menu/list')
.then(resp => {
this.menuList = resp.data.menuList;
})
} }
</script> <style>
.el-header {
background-color: #0000AA;
color: #ffffff;
line-height: 60px;
font-size: 28px;
}
.el-aside {
background-color: #e3e3e3;
width: 200px !important;
} body .el-table th.gutter{
display: table-cell!important;
}
body .el-table colgroup.gutter {
display: table-cell !important;
} </style>
4.总结
递归组件得重中之重,父组件与子组件、递归组件中都有共同的props,传值的过程:父组件menuList --> 菜单组件menuList --> 递归组件使用menuList
vue+elementUI 做的递归组件的更多相关文章
- vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。
vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...
- 用HTML,Vue+element-UI做桌面UI
DSkin封装的WebUI开发模式开发桌面应用,使用Vue很方便.使用起来有点像WPF 下面用 element-UI 做个简单的例子. 运行效果:可以自己根据需求改布局效果. 主框架的element- ...
- vue.js 树菜单 递归组件树来实现
树形视图 Example: https://vuefe.cn/v2/examples/tree-view.html 参照前辈方法实现的,觉得不错,记录一下: 父组件: <!-- 菜单树 --&g ...
- Vue+elementUI 创建“回到顶部”组件
1.创建"回到顶部"组件 1 <template> 2 <transition name="el-fade-in"> 3 <div ...
- vue element-ui 做分页功能之封装
在 vue 项目中的 components 中 创建一个 文件夹,文件夹里创建一个 name(这个名字你随意取).vue <template> <div class=" ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
- Vue两种组件类型介绍:递归组件和动态组件
一递归组件 递归组件的特性就是可以在自己的template模板中调用自己本身.值得注意的它必须设置name属性. // 递归组件 recursive.vue <template> < ...
- Vue.js递归组件实现动态树形菜单
使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...
- Vue组件的操作-自定义组件,动态组件,递归组件
作者 | Jeskson 来源 | 达达前端小酒馆 v-model双向绑定 创建双向数据绑定,v-model指令用来在input,select,checkbox,radio等表单控件.v-model指 ...
随机推荐
- Linux监控命令之==>iostat
一.使用说明 iostat 是对系统的磁盘I/O 操作进行监控,它的输出主要显示磁盘读写操作的统计信息,同时给出CPU 的使用情况.同vmstat 一样,iostat 不能对某个进程进行深入分析,仅对 ...
- Python学习之==>URL编码解码&if __name__ == '__main__'
一.URL编码解码 url的编码解码需要用到标准模块urllib中的parse方法 from urllib import parse url = 'http://www.baidu.com?query ...
- hibernate 1 连接数据库、操作表
ormapping(对象关系映射):数据库操作框架 缺点: 1.因为hql语句是hibernate内部自动生成,程序员干预不了,不可把控 2.功能比较复杂时不建议使用 优点: 1.比较简单. 2.有数 ...
- 【BASIS系列】SAP 日志管理
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP 日志管理 前言部分 ...
- mysql下载与安装过程
1:下载MySql 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应的下载文件.(我电脑是64位,所以这下载的是64位的下载文件) 2:解压mysq ...
- idea中创建maven格式的文件方法
其中新建的maven工程有时候不全或者出一些小问题导致新建类,或者其他文件时候找不到新建的快捷方式,下面就说一种快速设置
- 华硕RT-AC86U路由器 AP模式实现多路由器组网,扩展主路由器的无线网范围
描述: 宽带拨号上网的路由器为 TP-LINK TL-WAR1200L,由于室内空间大,遂在此路由器下接入一个 华硕RT-AC86U路由器: 配置使该 华硕路由器与 TP-LINK 路由器的网段相同 ...
- VM CentOS建立共享文件夹实现VS Code在windows环境下go开发,在centos环境里编译
简介 笔记本没办法更换系统,但是开发又必须在linux环境下进行,直接在vm界面环境下开发,卡的都蒙13.无奈之下想到这个法子,来解决现有尴尬的局面>>> 共分3个部分安装: (1) ...
- Python解释器判断整数相加溢出
溢出,则和的最高位(即符号位)与两个加数都不相同,例如 1)非负数+非负数=负数 2)负数+负数=非负数 那么,假设x为a与b的和,((a^b)>=0 && (x^a)<0 ...
- ambari 2.5.0源码编译安装
参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...