1. 程式人生 > >vue給同一元素綁定單擊click和雙擊事件dblclick,執行不同邏輯

vue給同一元素綁定單擊click和雙擊事件dblclick,執行不同邏輯

部分 tab timeout 監聽 nbsp art dia method ons

在做項目過程中,需求是點擊孔位單擊彈出對話框查看產品總數,雙擊彈出對話框查看詳情。一開始直接click和dblclick寫在標簽裏面,但是不管怎麽樣,總是執行單擊事件

解決辦法:利用計時器,在大概時間模擬雙擊事件

html部分代碼:

 <div class="grid-content">
    <el-button 
    v-for="(item,index) in items" :key="index"
   @click="storageCount(item.id)"
   @dblclick.native="storageDetail(item.id)"

    class
="inline-cell"
   :class="colors[item.status]"> {{item.id}}</el-button> </div>

.native主要用於監聽組件根元素的原生事件,主要是給自定義的組件添加原生事件。

官方對.native修飾符的解釋為:有時候,你可能想在某個組件的根元素上監聽一個原生事件。可以使用 v-on 的修飾符 .native

js部分代碼

<script>
import desDialog from ‘./dialog‘;
import detailDialog from ‘./detailDialog‘;
var time = null; // 在這裏定義time 為null export default { name: ‘storeTable‘, components: { desDialog, detailDialog }, props: [‘providerid‘], data() { return { colors: [‘space‘, ‘isBuy‘], showDialog: false, showDialogT: false }; }, methods: {
  // 單擊事件函數 storageCount(id) {
clearTimeout(time); //首先清除計時器 time = setTimeout(() => { this.showDialog = !this.showDialog; const obj = {}; obj.cutname = id; obj.providerid = this.providerid; this.$store.dispatch(‘GetStorageCount‘, obj); }, 300); //大概時間300ms },
  // 雙擊事件函數,清除計時器,直接處理邏輯 storageDetail(id) { clearTimeout(time); //清除
this.showDialogT = !this.showDialogT; const obj = {}; obj.cutname = id; obj.providerid = this.providerid; this.$store.dispatch(‘GetStorageDetail‘, obj); }, close() { this.showDialog = false; }, closeT() { this.showDialogT = false; } } }; </script>

vue給同一元素綁定單擊click和雙擊事件dblclick,執行不同邏輯