Vue事件處理原理及過(guò)程詳解
Vue事件監(jiān)聽(tīng)的方式貌似違背了關(guān)注點(diǎn)分離(separation of concern)的傳統(tǒng)理念。實(shí)際上,所有的Vue.js事件處理方法和表達(dá)式都嚴(yán)格綁定在當(dāng)前視圖的ViewModel上,它不會(huì)導(dǎo)致維護(hù)上的困難,使用v-on有以下好處:
1、掃一眼HTML模板便能輕松定位在JS代碼里對(duì)應(yīng)的方法。
2、無(wú)須在JS里手動(dòng)綁定事件,ViewModel代碼可以是非常純粹的邏輯,和DOM完全解耦,更易于測(cè)試。
3、當(dāng)一個(gè)ViewModel被銷毀時(shí),所有的事件處理器都會(huì)自動(dòng)被刪除,無(wú)須擔(dān)心自己如何清理它們。
事件處理步驟
1. 綁定監(jiān)視
2. 事件修飾符
3. 按鍵修飾符
代碼如下
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><!--列表過(guò)濾與排序--><div id='demo'> <h2>綁定監(jiān)聽(tīng)</h2> <button @click='test1'>test1</button> <button @click='test2(123)'>test2</button> <button @click='test3'>test3</button> <!-- 無(wú)參函數(shù),實(shí)際上是傳了$event對(duì)象--> <button @click='test4(1234,$event)'>test4</button> <h2>事件修飾符</h2> <!--存在事件冒泡的情況--> <h3>阻止事件冒泡</h3> <div @click='test5'> <!--@click.stop 停止事件冒泡 --> <div @click.stop='test6'></div> </div> <br> <h3>阻止事件的默認(rèn)行為</h3> <a rel='external nofollow' @click.prevent='test7'>去百度</a> <br> <h2>按鍵修飾符</h2> <!-- <input type='text' @keyup='test8'>--> <!--原始寫(xiě)法--> <!--<input type='text' @keyup.13='test8'>--> <!--13就是enter鍵的keyCode碼--> <input type='text' @keyup.enter='test8'/> <!--直接寫(xiě)名字--></div><script type='text/javascript' src='http://www.aoyou183.cn/bcjs/lib/vue.min.js'></script><script> new Vue({ el: '#demo', methods: { test1(){alert(’test1’); }, test2(number){alert(number); }, test3(event){alert(event.target.innerHTML); }, test4(number, event){alert(number + ’----’ + event.target.innerHTML); }, test5(){alert(’out’) }, test6(){alert(’inner’) }, test7(){//event.preventDefault() //原生的方式阻止事件的默認(rèn)行為alert(’點(diǎn)擊,但是通過(guò)@click.prevent阻止事件的默認(rèn)行為,不會(huì)跳轉(zhuǎn)到百度去了’) }, test8(event){//原始寫(xiě)法;//if (event.keyCode === 13){ // Enter鍵// alert(event.target.value)//}alert(event.target.value) } } });</script></body></html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟2. 使用python 計(jì)算百分位數(shù)實(shí)現(xiàn)數(shù)據(jù)分箱代碼3. ASP基礎(chǔ)知識(shí)VBScript基本元素講解4. ajax請(qǐng)求添加自定義header參數(shù)代碼5. Kotlin + Flow 實(shí)現(xiàn)Android 應(yīng)用初始化任務(wù)啟動(dòng)庫(kù)6. 基于javascript處理二進(jìn)制圖片流過(guò)程詳解7. 使用Python和百度語(yǔ)音識(shí)別生成視頻字幕的實(shí)現(xiàn)8. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問(wèn)題……9. 教你如何寫(xiě)出可維護(hù)的JS代碼10. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)
