本文主要介绍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. [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.2 应力张量

    1.  在有粘性的情形, 外界流体对 $\Omega$ 的作用力, 不仅有表面上的压力 (正压力), 也有表面上的内摩擦力 (切应力). 2.  于 $M$ 处以 ${\bf n}$ 为法向的单位面积 ...

  2. requests中自定义adapter

    # encoding:utf-8 import sslfrom requests import sessionsfrom requests import Requestfrom requests.ad ...

  3. DUMP3.5 企业级电商项目

    购物车模块 加入商品 更新商品数 查询商品数 移除商品 单选/取消 全选/取消  购物车列表 [浮点型商业运算精度丢失问题]ej1st 一书提到 float double只适合科研计算,BigDeci ...

  4. clam简单使用

    clam简单使用: 0,首先,要全局安装Nodejs,不再赘述.clam依赖node使用 1,打开 cmd 2,全局安装clam:npm -g install clam 3,切换到目的盘下,新建一个空 ...

  5. 2.9 while循环

    while循环 <1>while循环的格式 while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... demo i = 0 whil ...

  6. [Kubernetes]谈谈Kubernetes的本质

    当下k8s算是比较火的一个内容,那么它到底是什么呢,它为什么会这么火呢,它解决的是什么问题呢.这篇文章就尝试着来讲讲,Kubernetes的本质. 当我们谈Kubernetes的时候,总是会想起来Do ...

  7. 仿stl+函数模板

    #include<iostream> using namespace std; template<class T> void output(T begin, T end) { ...

  8. 51nod--1135 原根 (数论)

    题目: 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P,找出P最小的原根. Input 输入1个质数P(3 <= P ...

  9. 【原创】大叔算法分享(4)Cardinality Estimate 基数计数概率算法

    读过<编程珠玑>(<Programming Pearls>)的人应该还对开篇的Case记忆犹新,大概的场景是: 作者的一位在电话公司工作的朋友想要统计一段时间内不同的电话号码的 ...

  10. Django-瀑布流

    1.通过ajax方式实现滚动条瀑布流(1)创建数据库:xixi\pubu\models.py from django.db import models #Img图片表 class Img(models ...