W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
事件提供了一種可以將用戶的行為從視圖層反饋到邏輯層進行處理的通訊方式。觸發(fā)綁定在組件上的事件的時候,就會執(zhí)行邏輯層中對應的事件處理函數(shù),同時也可以傳遞數(shù)據(jù),例如 id,dataset 等。
目標:在組件中綁定一個事件處理函數(shù) bindtap 。
模板:
<view id="swanTap" data-say="hello" bindtap="tapHandle"> 點擊 </view>
定義事件的處理函數(shù):
Page({
tapHandle(e) {
swan.showToast(e.currentTarget.dataset.say);
}
});
效果:當用戶單擊組件時,顯示:"hello"。
與瀏覽器的 DOM 事件類似,智能小程序的視圖中事件分為冒泡事件和非冒泡事件。
冒泡事件如下表,不在列表的事件均為非冒泡事件。
事件類型 | 觸發(fā)時機 |
---|---|
tap | 觸摸后馬上離開 |
longtap | 觸摸后超過 350ms 再離開(推薦使用 longpress 事件代替) |
longpress | 觸摸后超過 350ms 再離開,如果是指定了事件回調函數(shù)并觸發(fā)了這個事件,tap 事件將不被觸發(fā) |
touchstart | 觸摸開始時 |
touchmove | 觸摸后移動時 |
touchcancel | 觸摸后被打斷時,如來電等 |
touchend | 觸摸結束時 |
touchforcechange | 支持 3D Touch 的 iPhone 設備,重按時會觸發(fā)。 |
transitionend | 會在 transition 或 swan.createAnimation 動畫結束后觸發(fā) |
animationstart | 會在 animation 動畫開始時觸發(fā) |
animationiteration | 會在 animation 一次迭代結束時觸發(fā) |
animationend | 會在 animation 動畫完成時觸發(fā) |
事件綁定在組件上,與屬性的寫法相同(以 key、value 的形式)。
代碼示例
<view id="wrap" bindtap="handleTap1">
wrap
<view id="module" catchtap="handleTap2">
module
<view id="text" bindtap="handleTap3">
text
</view>
</view>
</view>
效果:
捕獲階段是位于冒泡階段之前,在捕獲階段中,事件到達節(jié)點的順序與冒泡階段恰好相反。在捕獲階段監(jiān)聽的方式是采用capture-bind、capture-catch關鍵字,后者將中斷捕獲階段和取消冒泡階段。
代碼示例:capture-bind
<view id="wrap" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">
wrap
<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
text
</view>
</view>
效果:
代碼示例:capture-catch
<view id="wrap" bind:touchstart="handleTap1" capture-catch:touchstart="handleTap2">
wrap
<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
text
</view>
</view>
效果:
默認當組件觸發(fā)事件時,邏輯層綁定事件的處理函數(shù)會收到一個默認參數(shù),即事件對象。
下面是事件對象詳細屬性列表:
屬性 | 類型 | 說明 |
---|---|---|
type | String | 事件的類型 |
timeStamp | Integer | 事件觸發(fā)的時間戳(毫秒) |
target | Object | 觸發(fā)事件的組件的屬性值集合 |
currentTarget | Object | 當前組件的一些屬性值集合 |
detail | Object | 自定義事件對象屬性列表 |
touches | Array | 觸摸事件類型存在,存放當前停留在屏幕中的觸摸點信息的數(shù)組 |
changedTouches | Array | 觸摸事件類型存在,存放當前變化的觸摸點信息的數(shù)組, changedTouch changedTouch |
<view id="outer" catchtap="handleTap">
<view id="inner">點擊我</view>
</view>
下面是事件對象的屬性為屬性值集合時的詳細信息。這里需要注意的是 target 和 currentTarget 的區(qū)別,currentTarget 為當前事件所綁定的組件,而 target 則是觸發(fā)該事件的源頭組件。
屬性 | 類型 | 說明 |
---|---|---|
id | String | 觸發(fā)事件組件的 id |
tagName | String | 觸發(fā)事件組件的類型 |
dataset | Object | 觸發(fā)事件組件上由 data-開頭的自定義屬性組成的集合, |
屬性 | 類型 | 說明 |
---|---|---|
id | String | 事件綁定的組件的 id |
tagName | String | 事件綁定的組件的類型 |
dataset | Object | 事件綁定的組件上由 data-開頭的自定義屬性組成的集合 |
是自定義事件所攜帶的數(shù)據(jù)。
在組件的事件被觸發(fā)時,也可以傳遞自定義的數(shù)據(jù)。書寫方式: 以 data- 開頭,多個單詞由連字符-鏈接,不能有大寫(大寫會自動轉成小寫),最終的 - 在 dataset 中會將連字符轉成駝峰式寫法。如組件上data-car-color屬性值的讀取方式是: event.currentTarget.dataset.carColor。
屬性 | 類型 | 說明 |
---|---|---|
identifier | Number | 觸摸點的標識符 |
clientX, clientY | Number | 距離頁面可顯示區(qū)域(屏幕除去導航條)左上角的 X 軸與 Y 軸的距離 |
pageX, pageY | Number | 距離文檔左上角的 X 軸與 Y 軸的距離 |
數(shù)據(jù)格式同 touches,指的是有變化的觸摸點,如 touchstart(開始),touchmove(變化),touchend,touchcancel(結束)等。
點擊事件的 detail 帶有的 x, y 同 pageX, pageY 代表距離文檔左上角的距離。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: