小程序的事件处理
事件是视图层到逻辑层的通讯方式。它可以将用户的行为反馈到逻辑层进行处理。
1、事件类型
在微信小程序中,事件类型分类两大类:
-
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
-
非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
冒泡事件
以下表格列出了小程序中定义的常用的冒泡事件:
类型 | 触发条件 |
---|---|
touchstart | 手指触摸动作开始 |
touchmove | 手指触摸后移动 |
touchcancel | 手指触摸动作被打断,如来电提醒,弹窗 |
touchend | 手指触摸动作结束 |
tap | 手指触摸后马上离开 |
longpress | 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发 |
longtap | 手指触摸后,超过350ms再离开(推荐使用longpress事件代替) |
除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件。
非冒泡事件
其他组件自定义事件(微信官方自定义,非原生dom
事件)如无特殊声明都是非冒泡事件。例如:
<input bindinput="inputEvent" />
<scroll-view bindscroll="scrollEvent" />
2、小程序的事件绑定机制
常见的小程序事件绑定方式如下:
<button bind事件名="事件处理函数名"></button>
<button bind:事件名="事件处理函数名"></button>
<button catch事件名="事件处理函数名"></button>
bind
方式绑定事件可以应用于任何组件,而bind:
方式不能应用于原生组件。
原生组件只由操作系统控制的组件,如
input
组件,video
组件、camera
组件等。原生组件的特点是由Android
或IOS
操作系统直接提供,并不是微信自己实现的UI
。
bind
与bind:
方式绑定的事件不能阻止事件的冒泡, 但是catch
方式绑定的事件可以自动阻止事件冒泡。