微信小程序-點擊事件傳遞參數


1、dataset

在標簽中利用 data-xxx  來定義你要傳入的參數,,

然后事件中傳入 event 用 event.currentTarget.dataset.xxx 來取你傳入的值

在 WXML 中,這些自定義數據以 data- 開頭,多個單詞由連字符 - 連接。這種寫法中,連字符寫法會轉換成駝峰寫法,而大寫字符會自動轉成小寫字符。如:

  • data-element-type ,最終會呈現為 event.currentTarget.dataset.elementType ;
  • data-elementType ,最終會呈現為 event.currentTarget.dataset.elementtype 。
<view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view>
Page({
  bindViewTap:function(event){
    event.currentTarget.dataset.alphaBeta === 1 // - 會轉為駝峰寫法
    event.currentTarget.dataset.alphabeta === 2 // 大寫會轉為小寫
  }
})

2、mark

 2.7.1 以上,可以使用 mark 來識別具體觸發事件的 target 節點。此外, mark 還可以用於承載一些自定義數據(類似於 dataset )。

當事件觸發時,事件冒泡路徑上所有的 mark 會被合並,並返回給事件回調函數。(即使事件不是冒泡事件,也會 mark 。)

<view mark:myMark="last" bindtap="bindViewTap">
  <button mark:anotherMark="leaf" bindtap="bindButtonTap">按鈕</button>
</view>

如果按鈕被點擊,將觸發 bindViewTap 和 bindButtonTap 兩個事件,事件攜帶的 event.mark 將包含 myMark 和 anotherMark 兩項。

Page({
  bindViewTap: function(e) {
    e.mark.myMark === "last" // true
    e.mark.anotherMark === "leaf" // true
  }
})

細節注意事項:

  • 如果存在同名的 mark ,父節點的 mark 會被子節點覆蓋。
  • 在自定義組件中接收事件時, mark 不包含自定義組件外的節點的 mark 。
  • 不同於 dataset ,節點的 mark 不會做連字符和大小寫轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM