vue经过v-for渲染的列表,能够单独操做的其中的列表的两种方法

如图,三个标题分别有多个子元素。经过点击三个标题分别控制显示和隐藏。上代码spa

第一种状况:点击 青1,其全部的标题下的列表所有隐藏,也就是只有一个标题的会显示子元素code

<div class="items" v-for="(item,index) in list">

<div class="item_top" @click="clickTitle(index)"> //经过当前列表的index和data里面自定义的aIndex属性进行判断,若是相同,就显示当前子元素<span class="title"> {{item.title}} </span><div class="item_right"><span class="num">{{item.items.length}}个</span><img src="images/top.png" alt="" v-show="aIndex == index"><img src="images/bottom.png" alt="" v-show="!aIndex == index"></div></div><!-- 子列表 --><div class="item" v-for="(proItem,proIndex) in item.items" v-show="aIndex == index"> {{proItem}} </div></div>
clickTitle:function(index){
       
        if(aIndex == index){ 
            aIndex = -1; 
}else{
aIndex = index;
} }
//若是当前元素已经被点击并显示子列表,那么aindex确定就等于index,
           
因此让aindex赋值为负值,因此此时,aindex和全部的标题的index都不相等,因此当前的被点击的会被隐藏。不然,当前被点击的被index赋值,并显示子元素

 



 

data: {
               aIndex:'', //定义一个中间变量              
                list:[{
                    title:'青1',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2','青岛市市立医院3'
                    ],
                    show: false, //在循环里面加一个状态判断条件,在方法里面经过show状态判断是显示仍是隐藏
                },
                {
                    title:'青2',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2'
                    ],
                    show: false,
                },
                {
                    title:'青3',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2','青岛市市立医院3'
                    ],
                    show: false,
                },]
            },            

 

 

第二种状况:点击青1,显示青1下的子元素。点击青2或者其余,青1子元素依旧存在,不会有状态的改变。blog

 
 
//经过点击传过来的当前item下的show属性,动态的切换显示和隐藏,不影响其余的列表

<
div class="items" v-for="(item,index) in list"> <div class="item_top" @click="clickTitle(item)"> <span class="title"> {{item.title}} </span> <div class="item_right"> <span class="num">{{item.items.length}}个</span> <img src="images/top.png" alt="" v-show="item.show"> <img src="images/bottom.png" alt="" v-show="!item.show"> </div> </div> <!-- 子列表 --> <div class="item" v-for="(proItem,proIndex) in item.items" v-show="item.show"> {{proItem}} </div> </div>
data: {
                list:[{
                    title:'青1',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2','青岛市市立医院3'
                    ],
                    show: false, //在循环里面加一个状态判断条件,在方法里面经过show状态判断是显示仍是隐藏
                },
                {
                    title:'青2',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2'
                    ],
                    show: false,
                },
                {
                    title:'青3',
                    items:[
                        '青岛市市立医院1','青岛市市立医院2','青岛市市立医院3'
                    ],
                    show: false,
                },]
            },
clickTitle:function(item){
       //经过点击传过来的当前item下的show属性,动态的切换显示和隐藏,不影响其余的列表
          item.show = !item.show;   
     }
相关文章
相关标签/搜索