微信小程序> 微信小程序之触控事件

微信小程序之触控事件

浏览量:2008 时间: 来源:攻城狮Lee丶

什么是事件

  • 事件是视图层到逻辑层的通讯方式。
  • 事件可以将用户的行为反馈到逻辑层进行处理。
  • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
  • 事件对象可以携带额外信息,如 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.jsPage({  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    })  }})

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎