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 相关文章推荐
Prototype Array对象 学习
Jul 19 Javascript
javascript中全局对象的isNaN()方法使用介绍
Dec 19 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
canvas绘制多边形
Feb 24 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
Sep 04 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php print EOF实现方法
2009/05/21 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
Python 从相对路径下import的方法
2018/12/04 Python
更新修改后的Python模块方法
2019/03/03 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
枚举与#define宏的区别
2014/04/30 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
个人自我剖析材料
2014/09/30 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
机动车交通事故协议书
2015/01/29 职场文书
人生遥控器观后感
2015/06/11 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
Python中异常处理用法
2021/11/27 Python