vue v-for循环里面点击当前元素显示再点击隐藏


 原文:https://segmentfault.com/q/1010000016290363

<li v-for="(list,index) in getTableData(currentPage)" :key="index"> <div class="popup-msg-div"> <div class="msg-div-add">{{list.detail_address}}</div> <div>{{list.serial_number}}</div> <div>{{list.createtime}}</div> <div class="msg-div-add">{{list.warn_desc}}</div> <div class="popup-msg-more" @click="msgShow(index)">查看详情</div> </div> <div class="msg-box" v-show="activeIndex===index"> <div class="msg-box-tit popup-msg-tit "> 异常详情 <div class="popup-box-close" @click="msgClose(index)">收起<b>︽</b></div> </div> <div class="msg-div"> <div>异常原因</div> <div>推送时间</div> <div>推送人员</div> </div> <div class="msg-div" v-for="item in list.detailList"> <div>{{item.warn_desc}}</div> <div>{{item.createtime}}</div> <div>{{item.ctrl_name}}:{{item.ctrl_phone}}</div> </div> </div> </li>
 data() { return { activeIndex: -1 }; },
//查看详情 msgShow (index) { this.activeIndex = index; }, //收起 msgClose(index) { this.activeIndex = !index; },

我现在是两个点击事件控制 我想用msgShow这一个事件控制应该怎么做

 

 

试下传不同的参数?

<div class="popup-msg-more" @click="msgShow(index)">查看详情</div>
msgShow (index) {
      this.activeIndex = this.activeIndex == index ? -1 : index; },
msgShow(index){ this.activeIndex = this.activeIndex === index ? !index : index; }

另外一个思路:

先遍历,给getTableData这个数组每一项添加一个isShowDetail: false
<div class="popup-msg-more" @click="msgShow(list,index)">查看详情</div>

<div class="msg-box" v-show="list.isShowDetail"> methods:{ msgShow (list,index) { list.isShowDetail = !list.isShowDetail; }, }

可以保证每一条数据的详情显示与关闭状态都是独立的,
这样按钮那里也可以通过list.isShowDetail的状态来显示不同的文字


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM