鍍金池/ 問答/Java  PHP  C  HTML/ vue v-for的時(shí)候,怎么讓點(diǎn)擊事件只在循環(huán)的一行觸發(fā)對(duì)應(yīng)效果,如下圖和代碼

vue v-for的時(shí)候,怎么讓點(diǎn)擊事件只在循環(huán)的一行觸發(fā)對(duì)應(yīng)效果,如下圖和代碼

問題

我點(diǎn)擊有向下箭頭的框框的時(shí)候,出現(xiàn)了3個(gè)彈出框,我想只出現(xiàn)對(duì)應(yīng)的行的彈出框

點(diǎn)擊前

clipboard.png

點(diǎn)擊后

clipboard.png

代碼

                    <tr v-for="item in tableData">
                        <td>
                             <label class="checkbox">
                                <input type="checkbox"/>
                                <span></span>
                            </label>
                            <!-- 有向下箭頭的框框 -->
                            <div @click="controlToggle" class="hover-btn">
                                <span></span>
                            </div>
                            <!-- 點(diǎn)擊后彈出的框框 -->
                            <ul v-show="controlDialog" class="hover-dialog">
                                <li @click="controlHide" class="dialog-item">禁用</li>
                                <li @click="controlHide" class="dialog-item">編輯</li>
                                <li @click="controlHide" class="dialog-item">刪除</li>
                            </ul>
                        </td>
                        <td>{{item.id}}</td>
                        <td class="td-title">{{item.title}}</td>
                        <td>{{item.version}}</td>
                        <td>{{item.grade}}</td>
                        <td>{{item.subject}}</td>
                        <td>{{item.number}}</td>
                        <td>{{item.where}}</td>
                        <td>{{item.name}}</td>
                        <td>{{item.time}}</td>
                    </tr>
      controlDialog: false,
  methods:{
      controlToggle(){
          this.controlDialog = !this.controlDialog
      },
      controlHide(){
          this.controlDialog = false
      }
  },
回答
編輯回答
久礙你

利用index索引來(lái)做
v-for = "(item,index) in data" 點(diǎn)擊把索引存到某個(gè)變量為xx
然后下面v-show這樣寫

v-show = "index==xx?true:false"

2017年7月19日 20:00
編輯回答
放開她

把 controlDialog 放到 tableData 里面

methods:{

  controlToggle(i){
      this.tableData[i].controlDialog = !this.controlDialog
  },
  controlHide(i){
      this.tableData[i].controlDialog = false
  }

},

2018年8月14日 19:58
編輯回答
別逞強(qiáng)
 <tr v-for="(item,i) in tableData">
                        <td>
                             <label class="checkbox">
                                <input type="checkbox"/>
                                <span></span>
                            </label>
                            <!-- 有向下箭頭的框框 -->
                            <div @click="controlToggle(i)" class="hover-btn">
                                <span></span>
                            </div>
                            <!-- 點(diǎn)擊后彈出的框框 -->
                            <ul v-show="cindex===i&&controlDialog" class="hover-dialog">
                                <li @click="controlHide" class="dialog-item">禁用</li>
                                <li @click="controlHide" class="dialog-item">編輯</li>
                                <li @click="controlHide" class="dialog-item">刪除</li>
                            </ul>
                        </td>
                        <td>{{item.id}}</td>
                        <td class="td-title">{{item.title}}</td>
                        <td>{{item.version}}</td>
                        <td>{{item.grade}}</td>
                        <td>{{item.subject}}</td>
                        <td>{{item.number}}</td>
                        <td>{{item.where}}</td>
                        <td>{{item.name}}</td>
                        <td>{{item.time}}</td>
                    </tr>
controlDialog: false,
cindex: -1
 methods:{
      controlToggle(i){
          this.controlDialog = !this.controlDialog
          this.cindex = i
      },
      controlHide(){
          this.cindex = -1
          this.controlDialog = false
      }
  }
2018年2月16日 23:53
編輯回答
尤禮
 methods:{
      controlToggle(item){
          item.controlDialog = !item.controlDialog
      },
      controlHide(item){
          item.controlDialog = false
      }
  },

    <div @click="controlToggle(item)" class="hover-btn">
                            <span></span>
                        </div>
  
  另一個(gè)同理。把tag綁在每一行上,而不應(yīng)該是全局用統(tǒng)一tag
  
  還有方法二,就是全局存放index,然后通過(guò)index判斷是否顯示
2017年9月25日 02:44