废话不多说,直接上传代码:目录结构这个目录结构只是创建文件夹,用于vue命令的统一管理,和注册一样。用户可以根据自己的项目适当修改。指令代码:longpress.jsexportdefault{name:"longpress",//指令名称instance:{bind(el,binding,vnode){letisiOS=/iphone/gi.test(navigator.userAgent);constiosUnable=绑定。值.iosUnable||错误的;如果(isiOS&&iosUnable){返回;}变种定时器=空;vnode.start=function(e){//如果是点击事件,不启动定时器,直接返回if(e.type==="click"){return;}if(timer==null){//创建定时器(value.timems后执行长按功能)timer=setTimeout(function(){//执行长按功能functionbinding.value.cb();},绑定.值.时间);}};vnode.cancel=function(){if(timer!==null){clearTimeout(timer);定时器=空;}};//添加事件监听器el.addEventListener("mousedown",vnode.start);el.addEventListener("touchstart",vnode.start);//取消定时器el.addEventListener("click",vnode.cancel);el.addEventListener("touchmove",vnode.cancel);el.addEventListener("mouseout",vnode.cancel);el.addEventListener("touchend",vnode.cancel);el.addEventListener("touchcancel",vnode.cancel);},unbind(el,binding,vnode){//添加事件监听器el.removeEventListener("mousedown",vnode.start);el.removeEventListener("touchstart",vnode.start);//取消处理器el.removeEventListener("click",vnode.cancel);el.removeEventListener("touchmove",vnode.cancel);el.removeEventListener("mouseout",vnode.cancel);el.removeEventListener("touchend",vnode.cancel);el.removeEventListener("touchcancel",vnode.cancel);}}};全局绑定constrequireContext=require.context(".",false,/\.js$/);exportdefault(Vue:any)=>{requireContext.keys().forEach(path=>{if(path.indexOf("index")===-1){constrequireItem=requireContext(path).default;Vue.directive(requireItem.name,requireItem.ins距离);}});};然后就可以在main.js中引入方法了:
