什么是事件
- 事件是視圖層到邏輯層的通訊方式。
- 事件可以將用戶的行為反饋到邏輯層進行處理。
- 事件可以綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。
- 事件對象可以攜帶額外信息,如 id, dataset, touches。
事件的使用方式
- 在組件中綁定一個事件處理函數。
綁定事件處理函數:
Page({
tapName(event) {
console.log(event)
}
})
簡單來說就是將事件綁定到組件上面,bindtap和catchtap都屬於點擊事件,綁定了之后點擊組件可以觸發這個函數。。例如:
<view id="tapTest" data-hi="WeChat" bindtap="tapName">Click me!</view>
bindtap和catchtap的區別
(1) 相同點:首先他們都是作為點擊事件函數,就是點擊時觸發。在這個作用上他們是一樣的,可以不做區分。
(2) 不同點:他們的不同點主要是bindtap是冒泡的,catchtap是非冒泡的。
小程序中事件分為冒泡事件和非冒泡事件
冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。
非冒泡事件:當一個組件上的事件被觸發后,該事件不會像父節點傳遞。
(1) 本文以冒泡事件tap(手指觸摸后馬上離開,也就是點擊事件)為例子來區別bind和catch事件
(2) bindtap 事件綁定不會阻止冒泡事件向上冒泡
(3) catchtap 事件綁定可以阻止冒泡事件向上冒泡
小程序中的e.target與e.currentTarget
e.target是tap點擊事件觸發的對象(也就是點擊的是誰)
e.currentTarget是事件綁定在哪個元素上(也就是這個事件在哪個組件上)
案例1:
案例1,console打印結果,如下圖:
tap1與tap3使用的是bind關鍵字綁定tap事件,因為tap事件屬於冒泡事件,所以會發生事件冒泡。當點擊middle View,打印如下:
因為catch關鍵字,修飾的事件,會阻止向上傳播到outer.