效果:
html
<view class="list-item" v-for="(item,index1) in listData" :key="index1">
<view class="item-title" @click="item.content.length>0?handleToggle(item,index1):''">
<view class="">{{item.title}}</view>
<u-icon :name="item.isToggle ? 'arrow-right' : 'arrow-down'"></u-icon>
</view>
<view class="item-content" v-show="!item.isToggle">
<view class="content-sel" v-for="(c,index2) in item.content" :key="index2">
{{c.title}}
</view>
</view>
</view>
javascript
listData:[
{
title:"新疆",
isToggle:false,
content:[
{title:"新疆大明矿业1"},
{title:"新疆大明矿业2"}
],
},
{
title:"山东",
isToggle:false,
content:[
{title:"山东矿业1"},
{title:"山东矿业2"}
],
}
],
javascript
handleToggle(item,index1){
item.isToggle = !item.isToggle;
console.log(item.isToggle,"item.isToggle")
}
小程序打印的结果:值一直为true
如果你试过v-if不生效,又试了v-show,还是不行!!千万不要着急!
不是自己写的不对,而是uni-app和微信小程序修改值的方式不一致造成的。反正就是不承认是自己的问题。
其实解决的办法也很简单,就是要兼容两端,写出符合让两端都适合的代码 。
既然这样直接修改值不行,那就从根本出发。
javascript
handleToggle(item,index1){
// item.isToggle = !item.isToggle;
this.listData.forEach((item,index)=>{
if(index1 === index){
item.isToggle = !item.isToggle;
}
})
console.log(item,"item.isToggle")
}