zoukankan      html  css  js  c++  java
  • vue自定义tap指令

    1.Vue指令

      Vue提供自定义实现指令的功能, 和组件类似,可以是全局指令和局部指令,详细可以参见vue官网自定义指令一节(https://cn.vuejs.org/v2/guide/custom-directive.html).

    2.v-tap指令实现

      我个人的理解,编写指令即是在vue指令对象提供的钩子函数中做相应的逻辑处理,tap指令是在bind钩子函数中做相应的处理, 首先,要明白的是tap是为了处理click事件在iphone上的存在300ms的延时,这样使得连续点击很不流畅,tap通过移动端的touchstart事件和touchend事件判断移动距离为零的话,则触发绑定的函数,话不多说,上代码:

    Vue.directive('tap',{
        bind(el, binding, vNode){
            let expression = binding.value;
            let handler    = expression.name;
            let args       = expression.args
    
            on(el, 'touchstart', (e)=>{
                
                let startX = e.changedTouches[0].clientX;
                let startY = e.changedTouches[0].clientY;
    
                once(el, 'touchend',(ev)=>{
    
                    let disX = Math.abs(ev.changedTouches[0].clientX-startX);
                    let disY = Math.abs(ev.changedTouches[0].clientY-startY);
    
                    if(disX == 0 && disY ==0){
                        handler(args);
                    }
                })
            })
        }
    })

    使用示例: <div v-tap="{ name : mymethod, args:{arg1:11, args2:22} }"></div>

    3.总结

      当我们需要复用一些dom底层操作的时候,可以考虑使用vue directive的方式复用代码.

  • 相关阅读:
    洛谷 P1313 计算系数
    洛谷 P1088 火星人
    洛谷 P1049 装箱问题
    P5016 龙虎斗
    洛谷P1208
    求lca
    没有上司的舞会
    最短路spfa
    懒羊羊找朋友
    简单的图论问题之单源最短路dijkstra算法
  • 原文地址:https://www.cnblogs.com/024-faith/p/tap.html
Copyright © 2011-2022 走看看