首頁 > 軟體

微信小程式事件繫結傳參冒泡及捕獲的範例詳解

2022-04-18 22:00:14

常見的事件有:

型別觸發條件最低版本
touchstart手指觸控動作開始 
touchmove手指觸控後移動 
touchcancel手指觸控動作被打斷,如來電提醒,彈窗 
touchend手指觸控動作結束 
tap手指觸控後馬上離開 
longpress手指觸控後,超過350ms再離開,如果指定了事件回撥函數並觸發了這個事件,tap事件將不被觸發1.5.0
longtap手指觸控後,超過350ms再離開(推薦使用longpress事件代替) 
transitionend會在 WXSS transition 或 wx.createAnimation 動畫結束後觸發 
animationstart會在一個 WXSS animation 動畫開始時觸發 
animationiteration會在一個 WXSS animation 一次迭代結束時觸發 
animationend會在一個 WXSS animation 動畫完成時觸發 
touchforcechange在支援 3D Touch 的 iPhone 裝置,重按時會觸發 

有兩個注意點:

Touchcancle: 在某些特定場景下才會觸發(比如來電打斷等) 

tap事件和longpress事件通常只會觸發其中一個

currentTarget和target的區別

事件傳遞引數

當檢視層發生事件時,某些情況需要事件攜帶一些引數到執行的函數中, 這個時候就可以通過

data-屬性來完成:

1 格式:data-屬性的名稱

2 獲取:e.currentTarget.dataset.屬性的名稱

touches和changedTouches的區別

事件的繫結兩種方法

第一種:bind:事件名 推薦方式,冒號隔開

wxml檔案:

<button bind:tap="click1" data-name="{{name}}" data-age="18" id="bt">我是按鈕</button>

js檔案:

Page({

  /**
   * 頁面的初始資料
   */
  data: {
    name:"jeff"
  },
  //e為事件物件,事件所有產生的資料都在e中
  click1:function(e){
    console.log("你點選了事件1",e)
  },
  )}

第二種:bind事件名 不隔開

wxml檔案:

<view bindtap="click2">我是事件2</view>

js檔案:

Page({
  /**
   * 頁面的初始資料
   */
  //e為事件物件,事件所有產生的資料都在e中
  click2:function(e){
  console.log("你點選了事件2",e)
  },
  )}

事件傳參

關鍵字:setDate

WXML檔案:

<button bind:tap='click2'>你當前點選了{{num}}次</button>

js檔案

// pages/test/test.js
Page({
  data: {
    num:0,
  },
  click2: function (e) {
    this.setData({
      num:this.data.num+1
    })
    console.log('你點選了按鈕2')
  },
  
})

事件的冒泡與事件的捕獲

capture-bind:tap="click1"		 # 事件捕獲,執行順序:由外->內
bind:tap="click2"				# 事件冒泡,執行順序:由內->外
catch: 阻止事件捕獲
capture-catch:tap="click3"   # 順序執行到click3,不包括click3.後面不再繼續執行,阻止了

catch阻止捕獲

小結

1 響應函數直接寫在page物件中就可以了,不需要和vue一樣寫在methods裡面

2 <view bind:事件名稱 = "響應函數的函數名" data-引數名 = "值">

3 獲取點選事件傳過來的值,在事件物件中。例如:e.currentTarget.dataset中

以上就是微信小程式事件繫結傳參冒泡及捕獲的範例詳解的詳細內容,更多關於微信小程式事件繫結傳參冒泡及捕獲的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com