最近做項目,遇到一個問題,需要根據是否在數組里,判斷是否渲染出來
這是一個多選的實現
// multiSelect == 1 為多選 <ul class="q-main-t" v-if="item.multiSelect == 1"> <li v-for="(subitem,subindex) in item.quectionList" :key="subindex" @click="choiseItem(subindex)"> <img class="info-img" :src="subitem.img" /> <p> <img v-if="multiAnswer.includes(subindex)" src="img/checked.png"> <img v-else src="img/check.png" /> <span>{{subitem.text}}</span> </p> </li> </ul>
在choiseItem方法里面subindex為當前選項的index;
choiseItem方法如下:
if(this.multiAnswer.includes(subindex)){ this.multiAnswer = this.multiAnswer.filter(function (ele){return ele != subindex;}); }else{ this.multiAnswer.push(subindex); }
this.multiAnswer為已選擇的答案集合
根據選中狀態判斷顯示哪張圖片,
如果multiAnswer里包含當前選項的index值,就顯示選中的圖片checked.png multiAnswer.includes(subindex)。
否則用未選中的圖片check.png