Vue事件處理原理及過程詳解
Vue事件監聽的方式貌似違背了關注點分離(separation of concern)的傳統理念。實際上,所有的Vue.js事件處理方法和表達式都嚴格綁定在當前視圖的ViewModel上,它不會導致維護上的困難,使用v-on有以下好處:
1、掃一眼HTML模板便能輕松定位在JS代碼里對應的方法。
2、無須在JS里手動綁定事件,ViewModel代碼可以是非常純粹的邏輯,和DOM完全解耦,更易于測試。
3、當一個ViewModel被銷毀時,所有的事件處理器都會自動被刪除,無須擔心自己如何清理它們。
事件處理步驟
1. 綁定監視
2. 事件修飾符
3. 按鍵修飾符
代碼如下
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><!--列表過濾與排序--><div id='demo'> <h2>綁定監聽</h2> <button @click='test1'>test1</button> <button @click='test2(123)'>test2</button> <button @click='test3'>test3</button> <!-- 無參函數,實際上是傳了$event對象--> <button @click='test4(1234,$event)'>test4</button> <h2>事件修飾符</h2> <!--存在事件冒泡的情況--> <h3>阻止事件冒泡</h3> <div @click='test5'> <[email protected] 停止事件冒泡 --> <div @click.stop='test6'></div> </div> <br> <h3>阻止事件的默認行為</h3> <a rel='external nofollow' @click.prevent='test7'>去百度</a> <br> <h2>按鍵修飾符</h2> <!-- <input type='text' @keyup='test8'>--> <!--原始寫法--> <!--<input type='text' @keyup.13='test8'>--> <!--13就是enter鍵的keyCode碼--> <input type='text' @keyup.enter='test8'/> <!--直接寫名字--></div><script type='text/javascript' src='http://www.cgvv.com.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() //原生的方式阻止事件的默認行為alert(’點擊,但是通過@click.prevent阻止事件的默認行為,不會跳轉到百度去了’) }, test8(event){//原始寫法;//if (event.keyCode === 13){ // Enter鍵// alert(event.target.value)//}alert(event.target.value) } } });</script></body></html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: