本文主要介绍menu组件在有子菜单时如何手动的展开与收起。

展开:

  在需要展开的地方先设置openname变量如this.openname = ["设置"];

  再在$nextTick中调用updateOpened方法

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

收起:

  一般是用不着手动收起的,在有多个子菜单并设置了accordion为true时,打开别的子菜单会自动将其他子菜单收起,而我的项目只有一个子菜单,当切换到无子菜单的其他路由时就需要将子菜单收起,这是设置openname变量this.openname = [],再在$nextTick中调用updateOpened方法发现根本不管用,网上搜罗各种资源也只有菜单的手动展开,如此只能自己动脑了,查看了组件源码后发现个opened属性,设置有子菜单的元素的opened为false:this.$refs.child1.$children[2].opened = false;

再在$nextTick中调用updateOpened方法

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

完美解决
附上源码

<template>
<div class="hello">
<div class="icondiv"></div>
<Menu :active-name="selected" @on-select="menuselect" theme="light" ref="child" style="width:200px":open-names="openname" >
<template v-for="(item, index) in listdata">
<template v-if="item.child&&item.child.length>0">
<Submenu :name="item.name">
<template slot="title">
<Icon :class="item.icon"></Icon>
{{item.name}}
</template>
<template v-for="sub in item.child">
<MenuItem :name="sub.href">{{sub.name}}</MenuItem>
</template>
</Submenu>
</template>
<template v-else>
<MenuItem :name="item.href" >
<div :class="item.icon"></div>
<div class="layout-text">{{item.name}}</div>
</MenuItem>
</template>
</template>
</Menu>
</div>
</template>
<script>
export default {
name: 'menulist',
data () {
return {
listdata:[
{
'name':'公告',
'icon':['ixitong','cipp'],
'href':'#/menu1',
},
{
'name':'解惑',
'icon':['ianswer','cipp'],
'href':'#/menu2',
},
{
'name':'设置',
'icon':['im-extension','cipp'],
'child':[
{
'name':'审核',
'href':'#/submenu1',
},
{
'name':'托管',
'href':'#/submenu2',
},
]
}
],
selected:"#/submenu1",
openname:[],
}
},
methods: {
menuselect (a) {
this.$router.push({path:a.split('#')[1]});
},
watchRoute(){
if(this.$refs.child&&this.$route.name!="submenu1"&&this.$route.name!="submenu2"){
this.openname = [];
this.$refs.child.$children[2].opened = false;
}else{
this.openname = ['设置'];
}
this.$nextTick(()=> {
this.$refs.child.updateOpened();
});
}
},
watch:{
$route(){
this.watchRoute();
}
},
mounted(){
this.watchRoute();
}
}
</script>

iview menu组件手动收起与展开的更多相关文章

  1. iview Upload组件多个文件上传

    使用  iview Upload 上传组件 手动上传 包括单个文件和多个文件 思路:创建一个数组 把需要上传的文件 push到这个数组里面 1.引用组件 2.手动上传,根据官方文档 设置:before ...

  2. wpf 列表、菜单 收起与展开,通过Grid DoubleAnimation或者Expander实现

    菜单收缩有很多种方法具体如何实现还是看个人想法: 第一种通过后台控制收起与展开: 效果图: 代码 : <Grid> <Grid.ColumnDefinitions> <C ...

  3. GUI的最终选择 Tkinter(七):菜单Menu组件、Menubutton组件、OptionMenu组件

    Menu组件 今天说的Menu组件就是一些菜单组件,开始点点点... Tkinter提供了一个Menu组件,可以实现顶级菜单,下拉菜单和弹出菜单.由于底层是代码实现和优化的,所以不太建议通过按钮和其他 ...

  4. iView - DatePicker组件神坑,如何处理?

    最近使用iView - DatePicker组件时发现一些问题,明明设置是正常的日期时间格式,当需要使用这个时间的时候,页面却显示 Fri Jun 09 2017 12:00:10 GMT+0800 ...

  5. 使用Iview Menu 导航菜单(非 template/render 模式)

    1.首先直接参照官网Demo例子,将代码拷贝进项目中运行, 直接报错: Cannot read property 'mode' of undefined. 然后查看官网介绍,有一行注意文字,好吧. 2 ...

  6. yii2 Menu组件的使用

    1.首先引入类 use yii\widgets\Menu; 2.配置组件 <?php echo Menu::widget([ //ul的样式以及相应的属性 'options' => ['c ...

  7. element-ui tree树形组件自定义实现可展开选择表格

    最近做项目遇到一个需求,表格里可以展开,可以选择,大概效果如下图: 一开始是在table组件里找方法,使用了表格的合并方法,效果是实现了,但是表格的多选每次触发时,都会执行好几次,而且没法实现一部分的 ...

  8. Antd组件库,利用Menu组件模拟一个简单Tree组件

    当前工作中,前端的主要技术栈用是vue. 那React怎么办呢?总不至于把他扔在墙角吧! 只能在一些很小的项目上,也只有自己一个前端的时候,悄悄的上React. 当然,React项目UI组件还是最喜欢 ...

  9. 解决Delphi图形化界面的TEdit、TLable等组件手动拖拽固定大小,但是编译之后显示有差别的情况

    经常遇到这样的情况,在我们使用Delphi的可视化工具进行UI设计的时候,我们拖拽TEdit或者Label组件,并且在可视化界面上设置它们的长.宽 但是当我们编译和运行程序的时候,却发现真正显示出来的 ...

随机推荐

  1. 013_RomanToInteger

    #####solution1####faster#### def romanToInt(s): d={ 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, ...

  2. 连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,

    连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...

  3. 51nod 1035 最长的循环节

    正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数. 1/6= 0.1( ...

  4. codeblocks更改颜色主题

    链接:http://www.cnblogs.com/wenbosheng/p/5899483.html

  5. Bmob后端云学习(未完)

    Bmob后端云学习 BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务. 这种服务的一个代表就是Bmob后端云,BAT和亚马逊 ,都有这类产品 ...

  6. Web从入门到放弃<2>

    <添加debug-toolbar> django现在1.11是必须这么做: pip install django-debug-toolbar 设置1: INSTALLED_APPS = [ ...

  7. 【原创】Linux基础之常用命令

    1 磁盘.cpu.内存相关 查看全部设备信息 # lspci 查看整体磁盘空间占用情况 # df -h 查看整体磁盘inode占用情况 # df -i 查看文件详细信息 # ls -l $path 查 ...

  8. FM算法(二):工程实现

    主要内容: 实现方法 Python实现FM算法 libFM   一.实现方法 1.FM模型函数 变换为线性复杂度的计算公式: 2.FM优化目标 根据不同的应用,FM可以采用不同的损失函数loss fu ...

  9. iOS开发多线程之GCD

    Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Que ...

  10. 倒影问题(reflect:below)

    这个例子灵感来源于实现一个登录框下方的倒影: .box { width: 300px; height: 200px; border: 1px solid #1f637b; -webkit-box-re ...