美文网首页小程序程序员微信小程序开发
微信小程序之触控事件(六)

微信小程序之触控事件(六)

作者: 爱情小傻蛋 | 来源:发表于2017-02-21 22:04 被阅读1701次

    微信小程序之入门篇(一)
    微信小程序之注册篇(二)
    微信小程序之开发初体验(三)——开发工具使用和目录结构
    微信小程序之生命周期(四)
    微信小程序之数据绑定(五)
    微信小程序之触控事件(六)
    微信小程序之基础组件篇——视图容器(七)
    微信小程序之基础组件篇——基础内容(八)
    微信小程序之基础组件篇——表单组件(九)
    微信小程序之基础组件篇——导航组件(十)
    微信小程序之基础组件篇——媒体组件(十一)
    微信小程序之API篇——豆瓣图书搜索(十二)
    微信小程序之拓展篇——weui-wxss(十三)

    什么是事件

    • 事件是视图层到逻辑层的通讯方式。
    • 事件可以将用户的行为反馈到逻辑层进行处理。
    • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
    • 事件对象可以携带额外信息,如 id, dataset, touches。

    事件分类

    事件分为冒泡事件和非冒泡事件:

    • 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
    • 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

    WXML的冒泡事件列表:

    类型 触发条件
    touchstart 手指触摸动作开始
    touchmove 手指触摸后移动
    touchcancel 手指触摸动作被打断,如来电提醒,弹窗
    touchend 手指触摸动作结束
    tap 手指触摸后马上离开
    longtap 手指触摸后,超过350ms再离开

    注:除上表之外的其他组件自定义事件如无特殊申明都是非冒泡事件,如<form/>
    的submit事件,<input/>的input事件,<scroll-view/>的scroll事件,(详见各个组件)

    事件绑定

    事件绑定的写法同组件的属性,以 key、value 的形式。

    • key 以bind或catch开头,然后跟上事件的类型,如bindtap, catchtouchstart
    • value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。

    注:bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

    在编写代码中,使用频率高的事件方式是

    • 单击——tap
    • 长按——longtap
    • 滑动——touchstart、touchmove、touchend、touchcancel

    细心的读者可能会发现,点击事件中,还有一个很重要的事件——双击,小程序竟然没有实现,真是神奇。不过可以通过单击事件模拟双击时间实现。查阅资料发现,电脑或者手机的双击事件都是300ms内连续点击,所以本文也采用300ms以内连续点击视为双击事件。

    <!--index.wxml-->
    <view>
        <button bindtap="binddoubletap">点击</button>
    </view>
    
    //index.js
    Page({
      data: {
        //上一次点击的时间
        lastTapTime:0
      },
      binddoubletap:function(e){
        //获取点击当前时间
        var curTime = e.timeStamp
        //上一次点击的时间
        var lastTime = this.data.lastTapTime
        if(lastTime > 0){
           //电脑双击事件间隔为300ms以内,这里也用300ms间隔吧
          if(curTime - lastTime <300){
            console.log("双击事件触发")
          }else{
            console.log("单击事件触发")
          }
        }else{
          console.log("单击事件触发")
        }
         //保存本次点击的时间
        this.setData({
          lastTapTime: curTime
        })
      }
    })
    

    相关文章

      网友评论

      • 4003a0bdf3a4:这个方法有点问题,单击会进入间隔时间的else里,双击的第一下点击也会进入间隔时间的else里,怎么区分是单击还是双击?
        4003a0bdf3a4:@爱情小傻蛋 哦,知道了,谢谢:grin:
        爱情小傻蛋:@彩虹云里的彩虹糖 这只是模拟双击,但是无法区分单击和双击…

      本文标题:微信小程序之触控事件(六)

      本文链接:https://www.haomeiwen.com/subject/eyvuwttx.html