我这样写有点小问题,点击权限管理打开后点击部分管理1变色后,再点开电池管理下面的部门管理2也变色了,是因为循环ul的时候索引的问题吗,求指导请输入代码
请输入代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue点击切换显示隐藏</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<style type="text/css">
*{
padding: 0;
margin: 0;
font-size: 14px;
}
ul{
width: 200px;
height: auto;
}
h2{
background: green;
border: 1px solid #fff;
color: #fff;
height: 30px;
line-height: 30px;
text-indent: 24px;
}
h3{
background: #999;
height: 24px;
line-height: 24px;
border: 1px solid #fff;
text-indent: 50px;
}
a{
display: block;
width: 200px;
}
.zhe li.actives{
color: #fff;
background: red;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-for="menu in menus" style="background:#ccc;margin:10px 0">
<a @click="toggle(menu)">{{menu.name}}</a>
<ul v-show="menu.open" style="background:green;" class="zhe">
<li v-for="(item,index) in menu.list" @click = "abc(index)" :class="{'actives':i==index}">{{item.name}}</li>
</ul>
</li>
</ul>
</div>
<script>
new Vue({
el: "#app",
data() {
return {
i:null,
menus: [
{
name: '权限管理',
open: false,
id:'aaa',
list: [
{
name: '用户管理1'
},
{
name: '部门管理1'
},
{
name: '角色管理1'
},
{
name: '菜单管理1'
}
]
},
{
name: '电池管理',
open: false,
id:'bbb',
list: [
{
name: '用户管理2'
},
{
name: '部门管理2'
},
{
name: '角色管理3'
},
{
name: '菜单管理4'
}
]
}
]
}
},
methods:{
toggle(item) {
if(!item.open){
this.menus.map((v)=>{
v.open=false
})
}
item.open=!item.open
},
abc(index){
this.i=0
this.i = index
},
}
})
</script>
</body>
</html>
在toggle方法后面加
this.i = null
如果你还想再次点击之前点击的导航,其子级active不变,就在menus下面为每一个一级导航添加
activeIndex
变量用于记录子级导航的激活下标。这样点击了
权限管理
下的角色管理1
,然后点击电池管理
下的用户管理2
,再次回到权限管理
,角色管理1
也是激活状态