博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue----封装长按指令
阅读量:5093 次
发布时间:2019-06-13

本文共 1724 字,大约阅读时间需要 5 分钟。

封装全局长按指令
Vue.directive('longpress', {  bind: function(el, binding, vNode) {
  //el为长按对象(事件源)   //binding 事件处理函数 // 确保提供的表达式是函数,如果不是,将警告传给控制台 if (typeof binding.value !== 'function') { // 获取组件名称 const compName = vNode.context.name; // 将警告传递给控制台 let warn = `[longpress:] provided expression '${binding.expression}' is not a function, but has to be `; if (compName) { warn += `Found in component '${compName}' `} console.warn(warn); } // 定义变量,计时器清空 let pressTimer = null; // 定义函数处理程序start // 创建计时器( 1秒后执行函数 ) let start = (e) => {       //判断事件是否为click,e.button=0,则为左键,如果是click事件,或者不是按的左键(右键有默认行为),则直接return if (e.type === 'click' && e.button !== 0) { return; }       //判断计时器是否为空 if (pressTimer === null) { pressTimer = setTimeout(() => { // 执行事件处理函数 handler(); }, 1000) } } // 取消计时器 let cancel = (e) => { // 检查计时器是否有值 if ( pressTimer !== null ) { clearTimeout(pressTimer); pressTimer = null; } } // 运行函数 const handler = (e) => { // 执行传递给指令的方法 binding.value(e) } // 添加事件监听器 el.addEventListener("mousedown", start); el.addEventListener("touchstart", start); // 取消计时器 el.addEventListener("click", cancel); el.addEventListener("mouseout", cancel); el.addEventListener("touchend", cancel); el.addEventListener("touchcancel", cancel); }
使用全局长按指令
 
template>    

 

 
 
 
 
 

转载于:https://www.cnblogs.com/SRH151219/p/10445434.html

你可能感兴趣的文章
web前端(八)——ajax与jsonp
查看>>
机器学习的几种主要学习方法
查看>>
获取当前时间getDate()注意点
查看>>
UniMelb Comp30022 IT Project (Capstone) - 2.Vuforia in Unity
查看>>
orm框架与缓存的关系
查看>>
shell脚本实现FTP自动上传文件
查看>>
CGContextRef:mask和layer绘图
查看>>
设计模式之装饰者模式
查看>>
大数据学习资源(上)
查看>>
.out
查看>>
Python初学手记----在window系统中安装环境
查看>>
转载:苹果流媒体产品诞生点滴--写在乔布斯逝世5周年
查看>>
spss clementine Twostep Cluster(两步聚类 二阶聚类)
查看>>
如何实现大数据系统
查看>>
python 面试题之 生成器
查看>>
CH24C 逃不掉的路
查看>>
C# 获取文件路径
查看>>
探讨PHP页面跳转几种实现技巧
查看>>
排序比赛的回顾
查看>>
RT-Thread 4.0 + STM32F407 学习笔记1
查看>>