如bindtap
,當用戶點擊該組件的時候會在該頁面對應的Page中找到相應的事件處理函數(shù)。
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
Page({
tapName: function(event) {
console.log(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,
}],
}
事件分為冒泡事件和非冒泡事件
WXML的冒泡事件列表:
類型 | 觸發(fā)條件 |
---|---|
touchstart | 手指觸摸動作開始 |
touchmove | 手指觸摸后移動 |
touchcancel | 手指觸摸動作被打斷,如來電提醒,彈窗 |
touchend | 手指觸摸動作結束 |
tap | 手指觸摸后馬上離開 |
longtap | 手指觸摸后,超過350ms再離開 |
注:除上表之外的其他組件自定義事件都是非冒泡事件,如<form/>
的submit
事件,<input/>
的input
事件,<scroll-view/>
的scroll
事件,(詳見各個組件)
事件綁定的寫法同組件的屬性,以key、value的形式。
bind
或catch
開頭,然后跟上事件的類型,如bindtap
, catchtouchstart
bind
事件綁定不會阻止冒泡事件向上冒泡,catch
事件綁定可以阻止冒泡事件向上冒泡。
如在下邊這個例子中,點擊inner view會先后觸發(fā)handleTap3
和handleTap2
(因為tap事件會冒泡到middle view,而middle view阻止了tap事件冒泡,不再向父節(jié)點傳遞),點擊middle view會觸發(fā)handleTap2
,點擊outter view會觸發(fā)handleTap1
。
<view id="outter" bindtap="handleTap1">
outer view
<view id="middle" catchtap="handleTap2">
middle view
<view id="inner" bindtap="handleTap3">
inner view
</view>
</view>
</view>
如無特殊說明,當組件觸發(fā)事件時,邏輯層綁定該事件的處理函數(shù)會收到一個事件對象。
BaseEvent基礎事件對象屬性列表:
屬性 | 類型 | 說明 |
---|---|---|
type | String | 事件類型 |
timeStamp | Integer | 事件生成時的時間戳 |
target | Object | 觸發(fā)事件的組件的一些屬性值集合 |
currentTarget | Object | 當前組件的一些屬性值集合 |
屬性 | 類型 | 說明 |
---|---|---|
detail | Object | 額外的信息 |
TouchEvent 觸摸事件對象屬性列表(繼承 BaseEvent):
屬性 | 類型 | 說明 |
---|---|---|
touches | Array | 觸摸事件,當前停留在屏幕中的觸摸點信息的數(shù)組 |
changedTouches | Array | 觸摸事件,當前變化的觸摸點信息的數(shù)組 |
特殊事件:<canvas/>
中的觸摸事件不可冒泡,所以沒有 currentTarget。
該頁面打開到觸發(fā)事件所經(jīng)過的毫秒數(shù)。
觸發(fā)事件的源組件。
屬性 | 類型 | 說明 |
---|---|---|
id | String | 事件源組件的id |
tagName | String | 當前組件的類型 |
dataset | Object |
事件源組件上由data- 開頭的自定義屬性組成的集合 |
事件綁定的當前組件。
屬性 | 類型 | 說明 |
---|---|---|
id | String | 當前組件的id |
tagName | String | 當前組件的類型 |
dataset | Object |
當前組件上由data- 開頭的自定義屬性組成的集合 |
說明: target 和 currentTarget 可以參考上例中,點擊 inner view 時,handleTap3
收到的事件對象 target 和 currentTarget 都是 inner,而 handleTap2
收到的事件對象 target 就是 inner,currentTarget 就是 middle。
在組件中可以定義數(shù)據(jù),這些數(shù)據(jù)將會通過事件傳遞給 SERVICE。書寫方式:以data-
開頭,多個單詞由連字符-
鏈接,不能有大寫(大寫會自動轉成小寫)如data-element-type
,最終在 event.target.dataset 中會將連字符轉成駝峰elementType
。
示例:
<view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view>
Page({
bindViewTap:function(event){
event.target.dataset.alphaBeta === 1 // - 會轉為駝峰寫法
event.target.dataset.alphabeta === 2 // 大寫會轉為小寫
}
})
touches 是一個數(shù)組,每個元素為一個 Touch 對象(canvas 觸摸事件中攜帶的 touches 是 CanvasTouch 數(shù)組)。 表示當前停留在屏幕上的觸摸點。
屬性 | 類型 | 說明 |
---|---|---|
identifier | Number | 觸摸點的標識符 |
pageX, pageY | Number | 距離文檔左上角的距離,文檔的左上角為原點 ,橫向為X軸,縱向為Y軸 |
clientX, clientY | Number | 距離頁面可顯示區(qū)域(屏幕除去導航條)左上角距離,橫向為X軸,縱向為Y軸 |
屬性 | 類型 | 說明 | 特殊說明 |
---|---|---|---|
identifier | Number | 觸摸點的標識符 | |
x, y | Number | 距離 Canvas 左上角的距離,Canvas 的左上角為原點 ,橫向為X軸,縱向為Y軸 |
changedTouches 數(shù)據(jù)格式同 touches。表示有變化的觸摸點,如從無變有(touchstart),位置變化(touchmove),從有變無(touchend、touchcancel)。
自定義事件所攜帶的數(shù)據(jù),如表單組件的提交事件會攜帶用戶的輸入,媒體的錯誤事件會攜帶錯誤信息,詳見組件定義中各個事件的定義。
點擊事件的detail
帶有的 x, y 同 pageX, pageY 代表距離文檔左上角的距離。
更多微信小程序開發(fā)教程,可以關注。
KESION 科汛軟件
KESION 科汛軟件是國內領先的在線教育軟件及私域社交電商軟件服務提供商,長期專注于為企業(yè)提供在線教育軟件及社交電商SaaS平臺解決方案。
公司核心產品云開店SaaS社交電商服務平臺、在線教育SaaS服務平臺、教育企業(yè)數(shù)字化SaaS云平臺、企微營銷助手、私有化獨立部署品牌網(wǎng)校和在線教育咨詢等。KESION 不斷通過技術創(chuàng)新,提供產品和服務,助力企業(yè)向數(shù)字化轉型,通過科技驅動商業(yè)革新,讓商業(yè)變得更智慧!
小程序需要買服務器嗎?答案是肯定的,如果你想通過微信小程序來幫助你實現(xiàn)更多的工作量,提高你企業(yè)的收益,那么為小程序購買服務器是必須的??墒菍τ诤芏嘈麻_發(fā)的中小型企...
微信小程序碼上線還是很有意思的,“今天開始,不方了”一句簡短的宣傳語,宣告了小程序碼的到來。相信看過小程序碼的用戶,都會發(fā)現(xiàn)它要比方形的更美觀。但是小程序碼除了美...