什么是事件
- 事件是视图层到逻辑层的通讯方式。
- 事件可以将用户的行为反馈到逻辑层进行处理。
- 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
- 事件对象可以携带额外信息,如 id, dataset, touches。
cancel 事件的使用方式
catchtap不会冒泡,仅在当前元素触发
在组件中绑定一个事件处理函数。如:做一个搜索框清空的效果
在相对应的wxml文件中:
1 <icon class='icon_cancel' catchtap='cancel' type="cancel" size="20"/>
- 在相应的Page定义中写上相应的事件处理函数
1 // 点击清除搜索内容 2 cancel: function() { 3 this.setData({ 4 searchValue: '' 5 }) 6 },
事件绑定和冒泡
事件绑定的写法同组件的属性,以 key、value 的形式。
- key 以
bind
或catch
开头,然后跟上事件的类型,如bindtap
、catchtouchstart
。自基础库版本 1.5.0 起,bind
和catch
后可以紧跟一个冒号,其含义不变,如bind:tap
、、catch:touchstart
。 - value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。
bind
事件绑定不会阻止冒泡事件向上冒泡,catch
事件绑定可以阻止冒泡事件向上冒泡。
如在下边这个例子中,点击 inner view 会先后调用handleTap3
和handleTap2
(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2
,点击 outer view 会触发handleTap1
。
1 <view id="outer" bindtap="handleTap1"> 2 outer view 3 <view id="middle" catchtap="handleTap2"> 4 middle view 5 <view id="inner" bindtap="handleTap3"> 6 inner view 7 </view> 8 </view> 9 </view>