事件類別:
tap:點(diǎn)擊事件;
longtap:長(zhǎng)按事件;
touchstart:觸摸開(kāi)始;
touchend:觸摸結(jié)束;
touchcansce:取消觸摸;
事件綁定:
bind綁定;
catch綁定;(能阻止事件冒泡)
mut-bind 互斥事件綁定
事件綁定的寫法類似于組件的屬性,如:
<view bindtap="handleTap"> Click here! </view> |
如果用戶點(diǎn)擊這個(gè) view ,則頁(yè)面的 handleTap 會(huì)被調(diào)用。
事件綁定函數(shù)可以是一個(gè)數(shù)據(jù)綁定,如:
<view bindtap="{{ handlerName }}"> Click here! </view> |
此時(shí),頁(yè)面的 this.data.handlerName 必須是一個(gè)字符串,指定事件處理函數(shù)名;如果它是個(gè)空字符串,則這個(gè)綁定會(huì)失效(可以利用這個(gè)特性來(lái)暫時(shí)禁用一些事件)。
自基礎(chǔ)庫(kù)版本 1.5.0 起,在大多數(shù)組件和自定義組件中, bind 后可以緊跟一個(gè)冒號(hào),其含義不變,如 bind:tap 。基礎(chǔ)庫(kù)版本 2.8.1 起,在所有組件中開(kāi)始提供這個(gè)支持。
除 bind 外,也可以用 catch 來(lái)綁定事件。與 bind 不同, catch 會(huì)阻止事件向上冒泡。
例如在下邊這個(gè)例子中,點(diǎn)擊 inner view 會(huì)先后調(diào)用handleTap3和handleTap2(因?yàn)閠ap事件會(huì)冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父節(jié)點(diǎn)傳遞),點(diǎn)擊 middle view 會(huì)觸發(fā)handleTap2,點(diǎn)擊 outer view 會(huì)觸發(fā)handleTap1。
<view id="outer" bindtap="handleTap1"> outer view <view id="middle" catchtap="handleTap2"> middle view <view id="inner" bindtap="handleTap3"> inner view </view> </view> </view> |
自基礎(chǔ)庫(kù)版本 2.8.2 起,除 bind 和 catch 外,還可以使用 mut-bind 來(lái)綁定事件。一個(gè) mut-bind 觸發(fā)后,如果事件冒泡到其他節(jié)點(diǎn)上,其他節(jié)點(diǎn)上的 mut-bind 綁定函數(shù)不會(huì)被觸發(fā),但 bind 綁定函數(shù)和 catch 綁定函數(shù)依舊會(huì)被觸發(fā)。
換而言之,所有 mut-bind 是“互斥”的,只會(huì)有其中一個(gè)綁定函數(shù)被觸發(fā)。同時(shí),它完全不影響 bind 和 catch 的綁定效果。
例如在下邊這個(gè)例子中,點(diǎn)擊 inner view 會(huì)先后調(diào)用 handleTap3 和 handleTap2 ,點(diǎn)擊 middle view 會(huì)調(diào)用 handleTap2 和 handleTap1 。
<view id="outer" mut-bind:tap="handleTap1"> outer view <view id="middle" bindtap="handleTap2"> middle view <view id="inner" mut-bind:tap="handleTap3"> inner view </view> </view> </view> |