与浏览器的 DOM 事件类似,智能小程序的视图中事件分为冒泡事件和非冒泡事件
冒泡事件指的是当组件上的事件被触发后,该事件会向父节点传递;
非冒泡事件指的是当组件上的事件被触发后,该事件不会向父节点传递
用法
事件绑定在组件上,与属性的写法相同(以 key、value 的形式)。
<view id="text" bindtap="handleTap3">
code here
</view>
key 以 bind 或 catch 开头,衔接事件类型,例如 bindtap、catchtouchcancel
bind 与 catch 的区别是:
bind 事件绑定不会阻止冒泡事件向上冒泡;catch 事件绑定可以阻止冒泡事件向上冒泡;
<view id="wrap" bindtap="handleTap1">
view1
<view id="module" catchtap="handleTap2">
view2
<view id="text" bindtap="handleTap3">
view3
</view>
</view>
</view>
① 用户单击 text 会先后调用 handleTap3 和 handleTap2。这是因为 tap 事件冒泡到了 module,而 module 阻止了 tap 事件冒泡,不再向父节点传递
② 用户单击 module 会触发 handleTap2
③ 用户单击 wrap 会触发 handleTap1