微信小程序-bindtap等事件傳參 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

微信小程序-bindtap等事件傳參

發表時間:2021-2-20

發布人:葵宇科技

浏覽次數:54

什麼是事件

事件是視圖層到邏輯層的通(tōng)訊方式。 事件可(kě)以将用戶的行為反饋到邏輯層進行處理。
事件可(kě)以綁定在組件上,當達到觸發事件,就會執行邏輯層中(zhōng)對應的事件處理函數。
事件對象可(kě)以攜帶額外信息,如(rú) id, dataset, touches。

看圖,因為需要傳遞的數據比較多,所以我們通(tōng)過dataset攜帶參數信息。如(rú)果隻有一個(gè)參數,可(kě)以通(tōng)過id來傳遞。

詳解(以常見的tap點擊事情為例)

wxml

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
  • 1

JS

Page({
  tapName: function(event) {
    console.log(event)
  }
})
  • 1
  • 2
  • 3
  • 4
  • 5

event 打印結果

{
"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
}]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

注意兩點:

1、data-名稱 不能有大寫字母,如(rú)果需要,可(kě)以通(tōng)過 - (中(zhōng)劃線)來連接單詞,編譯的時候小程序會将第二個(gè)單詞首字母自動(dòng)大寫。圖中(zhōng)代碼是為了自己标志,所以第二個(gè)單詞的首字母大寫了,其實可(kě)以不用。data-* 屬性中(zhōng)不可(kě)以存放對象。

2、注意打印結果中(zhōng)target和(hé)currentTarget的區别。

target 觸發事件的源組件。
currentTarget 事件綁定的當前組件。

如(rú)果你(nǐ)在父容器(qì)上綁定了事件并傳參,當你(nǐ)點擊父容器(qì)時,事件綁定的組件和(hé)觸發事件的源組件是同一個(gè)元素,所以currentTarget 、target 都可(kě)以拿到參數,但是當你(nǐ)點擊子(zǐ)元素時,target 就不是事件綁定的組件了,所以拿不到參數。
由于事件冒泡的機制,父容器(qì)上綁定的事件依然可(kě)以觸發,所以currentTarget 依然可(kě)以拿到參數。

說明

id傳參和(hé)dataset類似,隻是最後獲取值的時候不同。event.currentTarget.id

相關(guān)案例查看更多