zoukankan      html  css  js  c++  java
  • vue给同一元素绑定单击click和双击事件dblclick,执行不同逻辑

    在做项目过程中,需求是点击孔位单击弹出对话框查看产品总数,双击弹出对话框查看详情。一开始直接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>
  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/feng-xl/p/9375992.html
Copyright © 2011-2022 走看看