在做项目过程中,需求是点击孔位单击弹出对话框查看产品总数,双击弹出对话框查看详情。一开始直接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
<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>
本资源由随笔博客发布。发布者:五维国度,转载请注明出处:http://blog.suibi.site/archives/4409
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。