什么是事件
- 事件是視圖層到邏輯層的通訊方式吼句。
- 事件可以將用戶的行為反饋到邏輯層進(jìn)行處理柳恐。
- 事件可以綁定在組件上胎撇,當(dāng)達(dá)到觸發(fā)事件贫贝,就會(huì)執(zhí)行邏輯層中對(duì)應(yīng)的事件處理函數(shù)秉犹。
- 事件對(duì)象可以攜帶額外信息,如 id, dataset, touches稚晚。
事件的使用方式
在組件中綁定一個(gè)事件處理函數(shù)崇堵。
如 bindtap,當(dāng)用戶點(diǎn)擊該組件的時(shí)候會(huì)在該頁(yè)面對(duì)應(yīng)的Page中找到相應(yīng)的事件處理函數(shù)客燕。
<view class='moto-container' bindtap='onTap'>
<text class='moto'>開(kāi)啟小程序之旅</text>
</view>
在相應(yīng)的Page定義中寫(xiě)上相應(yīng)的事件處理函數(shù)鸳劳,參數(shù)是event也搓。
onTap:function(){
//wx.navigateTo({//從父級(jí)頁(yè)面跳轉(zhuǎn)到子頁(yè)面赏廓,只能有5級(jí),上一級(jí)頁(yè)面呈現(xiàn)隱藏狀態(tài)
// url:"../newslist/newslist"
//});
wx.redirectTo({//跳轉(zhuǎn)到另一個(gè)主頁(yè)面,兩個(gè)頁(yè)面之間平行跳轉(zhuǎn),上一個(gè)頁(yè)面呈現(xiàn)關(guān)閉狀態(tài)
url: '../newslist/newslist',
})
//console.log("onTap")
},
事件分為冒泡事件和非冒泡事件:
1.冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后傍妒,該事件會(huì)向父節(jié)點(diǎn)傳遞幔摸。
2.非冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件不會(huì)向父節(jié)點(diǎn)傳遞颤练。
事件綁定的寫(xiě)法同組件的屬性既忆,以 key、value 的形式昔案。
- key 以
bind
或catch
開(kāi)頭尿贫,然后跟上事件的類型,如bindtap
踏揣、catchtouchstart
庆亡。自基礎(chǔ)庫(kù)版本 1.5.0 起,在非原生組件中捞稿,bind
和catch
后可以緊跟一個(gè)冒號(hào)又谋,其含義不變拼缝,如bind:tap
、catch:touchstart
彰亥。 - value 是一個(gè)字符串咧七,需要在對(duì)應(yīng)的 Page 中定義同名的函數(shù)。不然當(dāng)觸發(fā)事件的時(shí)候會(huì)報(bào)錯(cuò)任斋。
bind
事件綁定不會(huì)阻止冒泡事件向上冒泡继阻,catch
事件綁定可以阻止冒泡事件向上冒泡。
通過(guò)事件我們可以實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)废酷。 ^ _ ^