vue+iview框架实现左侧动态菜单功能的示例代码


Posted in Javascript onJuly 23, 2020

最近在使用vue-cli3配合iview框架搭建新的项目中用到了iview中的menu菜单,按照官网写法固定不太好,因为一般项目都是从后端动态获取菜单列表,所以我们需要将官网代码稍作修改,代码如下:

注意事项:

【1】菜单高亮部分动态绑定路由跳转的页面

Menu组件中有一个active-name反映的是当前高亮区域,因此可以动态的绑定active-name来实现高亮显示。前提是需要将MenuItem绑定的name也设置成页面路由的name

vue+iview框架实现左侧动态菜单功能的示例代码

【2】动态获取菜单数据,需要更新菜单

this.$nextTick(() => {
 	this.$refs.side_menu.updateOpened()
  	this.$refs.side_menu.updateActiveName()
  });

代码:

<template>
 <div class="leftNav">
 <Menu ref="side_menu" theme="dark" accordion v-for="(menuItem, menuIndex) in menuList" :key="menuIndex" :active-name="$route.name">
 
  <!-- 展开没有子菜单 -->
  <MenuItem v-if="!menuItem.children || menuItem.children.length==0" :key="menuIndex" :name="menuItem.to" :to="menuItem.to">
  <Icon :type="menuItem.icon" />
  <span>{{ menuItem.name }}</span>
  </MenuItem>
 
  <!-- 展开有子菜单 -->
  <Submenu v-else :name="menuIndex">
   <template slot="title">
    <Icon :type="menuItem.icon" />
    <span>{{menuItem.name}}</span>
   </template>
   <MenuItem v-for="(item, index) in menuItem.children" :key="index" :name="item.to" :to="item.to">{{item.name}}</MenuItem>
  </Submenu>
 </Menu>
 </div> 
   
</template>
<script>
export default {
 data() {
 return {
  menuList: [
  {
   name: "首页",
   to: "home",
   icon: "ios-archive-outline"
  },
  {
   name: "关于",
   to: "about",
   icon: "ios-create-outline"
  },
  {
   name: "菜单分类1",
   icon: "md-person",
   children: [
   {
    name: "用户",
    to: "user"
   }
   ]
  },
  {
   name: "菜单分类2",
   icon: "ios-copy",
   children: [
   {
    name: "测试",
    to: "test"
   }
   ]
  }
  ]
 };
 },
 created() {
 // 数据我先写静态的,可在初始化的时候通过请求,将数据指向menuList。
 // ajax成功回调后 this.menuList = response.data;
 // 别忘记更新菜单
 // this.$nextTick(() => {
 //	this.$refs.side_menu.updateOpened()
 //	this.$refs.side_menu.updateActiveName()
 //});
 }
};
</script>
<style lang="scss" scoped>
/deep/
 .ivu-menu-dark.ivu-menu-vertical
 .ivu-menu-item-active:not(.ivu-menu-submenu) {
 border-right: none;
 color: #fff;
 background: #2d8cf0 !important;
}
</style>

效果图:

vue+iview框架实现左侧动态菜单功能的示例代码

到此这篇关于vue+iview框架实现左侧动态菜单的文章就介绍到这了,更多相关vue iview左侧动态菜单内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于jquery的复制网页内容到WORD的实现代码
Feb 16 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
Vue2.0生命周期的理解
Aug 20 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
js 函数性能比较方法
Aug 24 Javascript
JS前后端实现身份证号验证代码解析
Jul 23 #Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 #Javascript
在vue中封装的弹窗组件使用队列模式实现方法
Jul 23 #Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 #Javascript
javascript递归函数定义和用法示例分析
Jul 22 #Javascript
简单了解vue 插值表达式Mustache
Jul 22 #Javascript
详解node.js 事件循环
Jul 22 #Javascript
You might like
如何隐藏你的.php文件
2007/01/04 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
curl和libcurl的区别简介
2015/07/01 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Python中装饰器的一个妙用
2015/02/08 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
五一家具促销方案
2014/01/10 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
119消防日活动总结
2014/08/29 职场文书
护士节活动总结
2014/08/29 职场文书
2014年实习生工作总结
2014/11/27 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB