什麼是事件
事件是視圖層到邏輯層的通信方式。 事件能夠將用戶的行爲反饋到邏輯層進行處理。
事件能夠綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。
事件對象能夠攜帶額外信息,如 id, dataset, touches。小程序
看圖,由於須要傳遞的數據比較多,因此咱們經過dataset攜帶參數信息。若是隻有一個參數,能夠經過id來傳遞。ide
詳解(以常見的tap點擊事情爲例)
wxml:
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>函數
JS:spa
Page({ tapName: function(event) { xml
console.log(event)對象
} })事件
event 打印結果get
{
"type":"tap",
"timeStamp":895,
/////////////////////////////////
"target": {
"id": "tapTest",
"dataset": {
"hi":"WeChat"
}
},
"currentTarget": {
"id": "tapTest",
"dataset": {
"hi":"WeChat"
}
},
///////////////////////////////
"detail": {
"x":53,
"y":14
},
"touches":[{
"identifier":0,
"pageX":53,
"pageY":14,
"clientX":53,
"clientY":14
}],
"changedTouches":[{
"identifier":0,
"pageX":53,
"pageY":14,
"clientX":53,
"clientY":14
}]
}it
注意兩點:
一、data-名稱 不能有大寫字母,若是須要,能夠經過 - (中劃線)來鏈接單詞,編譯的時候小程序會將第二個單詞首字母自動大寫。圖中代碼是爲了本身標誌,因此第二個單詞的首字母大寫了,其實能夠不用。data-* 屬性中不能夠存放對象。io
二、注意打印結果中target和currentTarget的區別。
target 觸發事件的源組件。
currentTarget 事件綁定的當前組件。
若是你在父容器上綁定了事件並傳參,當你點擊父容器時,事件綁定的組件和觸發事件的源組件是同一個元素,因此currentTarget 、target 均可以拿到參數,可是當你點擊子元素時,target 就不是事件綁定的組件了,因此拿不到參數。
因爲事件冒泡的機制,父容器上綁定的事件依然能夠觸發,因此currentTarget 依然能夠拿到參數。
說明id傳參和dataset相似,只是最後獲取值的時候不一樣。event.currentTarget.id