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>
  • 相关阅读:
    WordPress怎么禁用古滕堡编辑器(Gutenberg)
    .Net Framework 4.0安装cmd命令
    Windows服务器一键要打开多个软件或一键关闭多个软件
    Photosho 切换英文版教程
    解决宝塔面板无法停止Tomcat方法
    只要系统镜像就能制作可启动安装系统U盘
    [网摘]分享一段流量劫持JS代码
    Script http跳https
    linux系统 标准目录及其内容
    centos7 永久修改主机名
  • 原文地址:https://www.cnblogs.com/feng-xl/p/9375992.html
Copyright © 2011-2022 走看看