博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
饿了么组件库,element-ui开发精美的后台管理系统系列之(一)开发伸缩菜单...
阅读量:6843 次
发布时间:2019-06-26

本文共 3291 字,大约阅读时间需要 10 分钟。


涉及到路由,权限等等相关内容的部分,跟本文主旨关系不大,所以我将会在另外一篇文章中详述,混在一起的话内容太多了


基于element-ui的左侧可伸缩的菜单

通过vuejs来开发支持展开收缩的菜单是非常简单的,只需要v-if v-else即可简单实现,下面我分步骤详细讲解过程,并在后续的系列文章中详细讲解权限菜单、路由过滤等等一些实用的技巧。当然还包括完整实现后台管理页面所要重点关注的细节。

如何把权限菜单展示出来呢?

首先,这是一个动态菜单,该显示什么样的菜单需要从后端获取,规则方面如下:

[    {        'label': '这个菜单',        'id': 001,        'parntid': 0    },    {        'label': '那个菜单',        'id': 002,        'parntid': 0    },    {        'label': '二个菜单',        'id': 003,        'parntid': 001    },    {        'label': '三个菜单',        'id': 003,        'parntid': 001    },    {        'label': '四个菜单',        'id': 003,        'parntid': 002    },    {        'label': '吴个菜单',        'id': 003,        'parntid': 002    }]

注意:我这里是用的两级菜单,同样的原理可以很简单的生成多级的。json中通过id来实现父子关联,也可以改成多级的json,用child来表示子级,子级的子级。这样也可以很容易的生成多级的多级菜单。不过通常也就两级或者三级。原理相同很容易扩展,如果不知道怎么扩展欢迎加入qq群:478694438来探讨。

下面看一下菜单的展示,需要aside标签,aside标签是html5的标签,没见过aside ?不要紧换成div也行。先看效果,再看代码(代码看上去有点长,别被吓着,我后面详细讲解):
这是收缩的状态:
clipboard.png

这是展开的状态:

clipboard.png

来分析一下这些乱糟糟的代码(这是我从源码中截出来的所以看起来有点乱):

<el-menu>、<ul>、changeState这三个都是aside标签下的同级的标签,分别对应:展开状态下的菜单、收缩状态下的菜单、切换状态的箭头。
先看el-menu:

collapsed这个值即为判断显示展开还是收缩状态的开关。对照ul下的v-else看。通过一个v-for 循环除所有的父级菜单,再次循环寻找子级菜单中parentId==id的子菜单,作为该父级菜单下的子菜单。这样就实现了展开状态下的菜单。

注意:图标的问题,图标可以选择从后端返回class,这样做起来起来更简单,我这里是通过预设一个getIcon()函数在本地设置显示,由于图标和路由面临的是相同的实现,所以我会在路由跳转相关的地方详细解释一下,应该在何种场景下选择何种方式。

再看ul:

这根element-ui就没有关系了,简单的ul li 实现。(路由相关的可以展示忽略,我会在下一篇文章中详细描述)

最后看:

通过collapsed 在v-if v-else中绑定视图简单实现了,开关功能。

写在最后

这个功能看似简单却包含了vuejs的十几个知识点。难倒了很多人,我之所有写这篇文章,也是因为很多朋友,在此之前不断的询问我如何才能优雅的实现这个功能。当然了这只一个完整的后台管理的开始,我将会在后面的文章中继续讲解关于大家最关心的要不要使用addRoutes,如何使用addRoutes,不使用addRoutes的情况下如何使用路由拦截来有没的实现路由与权限的匹配,包括系统内部不同权限展示不同的操作界面的问题,当然了这是后话。如果有时间的话,我会把这个系列写完,知道朋友们能独立开发一个完整的vuejs的单页面后台管理程序。

文中设计的代码我将会上传到讨论群中(478694438),不足之处优化共同探讨。

转载地址:http://fldul.baihongyu.com/

你可能感兴趣的文章
SAP Lenoardo Machine Learning
查看>>
5 Ways to Sell SAP S/4 HANA
查看>>
JS编程建议——26:小心if嵌套的思维陷阱
查看>>
Singleton(单例)模式和Double-Checked Locking(双重检查锁定)模式
查看>>
HDOJ 1013 Digital Roots
查看>>
软硬差异定性未来发展 笔电屏幕走在分岔路口
查看>>
Java魔法堂:JVM的运行模式 (转)
查看>>
thinkPHP四种URL访问方式(二)
查看>>
HDOJ 1064Financial Management
查看>>
全局变量声明的规范化(转)
查看>>
统一用户名
查看>>
Xamarin.Android开发实践(七)
查看>>
使用InstallShield打包VS程序
查看>>
我的Android进阶之旅------&gt;Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类...
查看>>
shell正则表达式匹配样例
查看>>
Sublime Text 的安装和配置
查看>>
数据库设计三大范式
查看>>
为了加速应用物联网,IT高管必须做的6件事
查看>>
查看MYSQL中数据表占用的空间
查看>>
栗蔚:中国云计算“风景独好”
查看>>