關(guān)于Vue v-on指令的使用
1、監(jiān)聽(tīng)事件
可以用 v-on
指令監(jiān)聽(tīng) DOM
事件,并在觸發(fā)時(shí)運(yùn)行一些 JavaScript
代碼。事件代碼可以直接放到v-on后面,也可以寫(xiě)成一個(gè)函數(shù)。
示例代碼如下:
<div id="app"> <p>{{counter}}</p> <button @click="counter += 1">+1</button> <button @click="subtract(10)">-10</button> </div> <script> const app = new Vue({ el: "#app", data: { counter: 0 }, methods: { subtract(value){ this.counter-=value } } }) </script>
2、傳入event參數(shù)
如果在事件處理函數(shù)中,想要獲取原生的DOM
事件,那么在html
代碼中,調(diào)用的時(shí)候,可以傳遞一個(gè)$event
參數(shù)。
示例代碼如下:
<button v-on:click="subtract(10,$event)">減10</button> ... <script> ... methods: { subtract: function(value,event){ this.count -= value; console.log(event); } } ... </script>
3、事件修飾符
在事件處理程序中調(diào)用 event.preventDefault()
或 event.stopPropagation()
是非常常見(jiàn)的需求。盡管我們可以在方法中輕松實(shí)現(xiàn)這點(diǎn),但更好的方式是:方法只有純粹的數(shù)據(jù)邏輯,而不是去處理 DOM
事件細(xì)節(jié)。
為了解決這個(gè)問(wèn)題,Vue.js
為 v-on
提供了事件修飾符。之前提過(guò),修飾符是由點(diǎn)開(kāi)頭的指令后綴來(lái)表示的。
- .stop:
event.stopPropagation
,阻止事件冒泡。 - .prevent:
event.preventDefault
,阻止默認(rèn)行為 - .capture:事件捕獲。
- .self:代表當(dāng)前這個(gè)被點(diǎn)擊的元素自身。
- .once:這個(gè)事件只執(zhí)行一次。
- .passive:在頁(yè)面滾動(dòng)的時(shí)候告訴瀏覽器不會(huì)阻止默認(rèn)的行為,從而讓滾動(dòng)更加順暢。
案例1:阻止單擊事件繼續(xù)傳播
<div id="app"> <div @click="divClick"> 1111 <button @click.stop="btnClick">按鈕</button> </div> </div> <script> let app = new Vue({ el: "#app", data: { count: 0 }, methods: { divClick(){ console.log("divClick") }, btnClick(){ console.log("btnClick") } } }); </script>
案例2:提交事件不再重載頁(yè)面
<div id="app"> <form action=""> <label> <input type="text"> </label> <label> <input type="submit" value="提交"> </label> </form> </div> <script> const app = new Vue({ el: "#app", data: { } }) </script>
以上是最標(biāo)準(zhǔn)的提交數(shù)據(jù)的代碼,提交完后會(huì)自動(dòng)跳轉(zhuǎn)到百度,但是現(xiàn)在有個(gè)需求,我們希望輸入完數(shù)據(jù)后,不會(huì)自動(dòng)跳轉(zhuǎn)到百度,而是通過(guò)自己的方法,先處理數(shù)據(jù),處理完后,自己指定頁(yè)面跳轉(zhuǎn),
代碼如下:
<div id="app"> <form action="https://www.baidu.com"> <label> <input type="text"> </label> <label> <input type="submit" value="提交" @click.prevent="testClick"> </label> </form> </div> <script> const app = new Vue({ el: "#app", methods: { testClick(){ } } }) </script>
這里我們給submit
綁定了一個(gè)點(diǎn)擊事件,并使用.prevent
阻止了他的默認(rèn)行為
到此這篇關(guān)于關(guān)于Vue v-on指令的使用 的文章就介紹到這了,更多相關(guān)Vue v-on指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺談Vue.js 中的 v-on 事件指令的使用
- 詳解vue中v-on事件監(jiān)聽(tīng)指令的基本用法
- 聊聊vue 中的v-on參數(shù)問(wèn)題
- Vue.js中v-on指令的用法介紹
- Vue中v-on的基礎(chǔ)用法、參數(shù)傳遞和修飾符的示例詳解
- vue中v-model、v-bind和v-on三大指令的區(qū)別詳解
- Vue中的v-model,v-bind,v-on的區(qū)別解析
- Vue.js基礎(chǔ)之監(jiān)聽(tīng)子組件事件v-on及綁定數(shù)據(jù)v-model學(xué)習(xí)
- vue3常用的指令之v-bind和v-on指令用法
- vue v-on傳遞參數(shù)和事件修飾符的使用
相關(guān)文章
如何在基于vue-cli的項(xiàng)目自定義打包環(huán)境
本篇文章主要介紹了在基于vue-cli的項(xiàng)目自定義打包環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11vue.js使用v-model實(shí)現(xiàn)表單元素(input) 雙向數(shù)據(jù)綁定功能示例
這篇文章主要介紹了vue.js使用v-model實(shí)現(xiàn)表單元素(input) 雙向數(shù)據(jù)綁定功能,結(jié)合完整實(shí)例形式分析了v-model實(shí)現(xiàn)表單input元素?cái)?shù)據(jù)雙向綁定相關(guān)操作技巧,需要的朋友可以參考下2019-03-03詳解關(guān)于vue2.0工程發(fā)布上線操作步驟
這篇文章主要介紹了詳解關(guān)于vue2.0工程發(fā)布上線操作步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09使用vue制作FullPage頁(yè)面滾動(dòng)效果
本篇文章主要介紹了使用vue制作FullPage頁(yè)面滾動(dòng)效果,詳細(xì)的介紹了FullPage頁(yè)面的思路和實(shí)現(xiàn),有興趣的可以了解一下2017-08-08解決vue 界面在蘋(píng)果手機(jī)上滑動(dòng)點(diǎn)擊事件等卡頓問(wèn)題
這篇文章主要介紹了vue 界面在蘋(píng)果手機(jī)上滑動(dòng)點(diǎn)擊事件等卡頓解決方案,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11Vue刷新后頁(yè)面數(shù)據(jù)丟失問(wèn)題的解決過(guò)程
在做vue項(xiàng)目的過(guò)程中有時(shí)候會(huì)遇到一個(gè)問(wèn)題,就是進(jìn)行F5頁(yè)面刷新的時(shí)候,頁(yè)面的數(shù)據(jù)會(huì)丟失,這篇文章主要給大家介紹了關(guān)于Vue刷新后頁(yè)面數(shù)據(jù)丟失問(wèn)題的解決過(guò)程,需要的朋友可以參考下2022-11-11