大家好,我是林三心,眾所周知,修飾符也是Vue的重要組成成分之一,利用好修飾符可以大大地提高開發的效率,接下來給大家介紹一下面試官最喜歡問的13種Vue修飾符
lazy修飾符作用是,改變輸入框的值時value不會改變,當光標離開輸入框時,v-model綁定的值value才會改變
<input type="text" v-model.lazy="value"><div>{{value}}</div>data() { return { value: '222' } }
lazy1.gif
trim修飾符的作用類似于JavaScript中的trim()方法,作用是把v-model綁定的值的首尾空格給過濾掉。
<input type="text" v-model.trim="value"><div>{{value}}</div>data() { return { value: '222' } }
number.gif
number修飾符的作用是將值轉成數字,但是先輸入字符串和先輸入數字,是兩種情況
<input type="text" v-model.number="value"><div>{{value}}</div>data() { return { value: '222' } }
先輸入數字的話,只取前面數字部分
圖片
先輸入字母的話,number修飾符無效
number2.gif
stop修飾符的作用是阻止冒泡
<div @click="clickEvent(2)" style="width:300px;height:100px;background:red"> <button @click.stop="clickEvent(1)">點擊</button></div>methods: { clickEvent(num) { 不加 stop 點擊按鈕輸出 1 2 加了 stop 點擊按鈕輸出 1 console.log(num) } }
事件默認是由里往外冒泡,capture修飾符的作用是反過來,由外網內捕獲
<div @click.capture="clickEvent(2)" style="width:300px;height:100px;background:red"> <button @click="clickEvent(1)">點擊</button></div>methods: { clickEvent(num) { 不加 capture 點擊按鈕輸出 1 2 加了 capture 點擊按鈕輸出 2 1 console.log(num) } }
self修飾符作用是,只有點擊事件綁定的本身才會觸發事件
<div @click.self="clickEvent(2)" style="width:300px;height:100px;background:red"> <button @click="clickEvent(1)">點擊</button></div>methods: { clickEvent(num) { 不加 self 點擊按鈕輸出 1 2 加了 self 點擊按鈕輸出 1 點擊div才會輸出 2 console.log(num) } }
once修飾符的作用是,事件只執行一次
<div @click.notallow="clickEvent(2)" style="width:300px;height:100px;background:red"> <button @click="clickEvent(1)">點擊</button></div>methods: { clickEvent(num) { 不加 once 多次點擊按鈕輸出 1 加了 once 多次點擊按鈕只會輸出一次 1 console.log(num) } }
prevent修飾符的作用是阻止默認事件(例如a標簽的跳轉)
<a href="#" @click.prevent="clickEvent(1)">點我</a>methods: { clickEvent(num) { 不加 prevent 點擊a標簽 先跳轉然后輸出 1 加了 prevent 點擊a標簽 不會跳轉只會輸出 1 console.log(num) } }
native修飾符是加在自定義組件的事件上,保證事件能執行
執行不了<My-component @click="shout(3)"></My-component>可以執行<My-component @click.native="shout(3)"></My-component>
這三個修飾符是鼠標的左中右按鍵觸發的事件
<button @click.middle="clickEvent(1)" @click.left="clickEvent(2)" @click.right="clickEvent(3)">點我</button>methods: { 點擊中鍵輸出1 點擊左鍵輸出2 點擊右鍵輸出3 clickEvent(num) { console.log(num) } }
當我們在監聽元素滾動事件的時候,會一直觸發onscroll事件,在pc端是沒啥問題的,但是在移動端,會讓我們的網頁變卡,因此我們使用這個修飾符的時候,相當于給onscroll事件整了一個.lazy修飾符
<div @scroll.passive="onScroll">...</div>
不加camel viewBox會被識別成viewbox<svg :viewBox="viewBox"></svg>加了canmel viewBox才會被識別成viewBox<svg :viewBox.camel="viewBox"></svg>
當父組件傳值進子組件,子組件想要改變這個值時,可以這么做
父組件里<children :foo="bar" @update:foo="val => bar = val"></children>子組件里this.$emit('update:foo', newValue)
sync修飾符的作用就是,可以簡寫:
父組件里<children :foo.sync="bar"></children>子組件里this.$emit('update:foo', newValue)
當我們這么寫事件的時候,無論按什么按鈕都會觸發事件
<input type="text" @keyup="shout(4)">
那么想要限制成某個按鍵觸發怎么辦?這時候keyCode修飾符就派上用場了
<input type="text" @keyup.keyCode="shout(4)">
Vue提供的keyCode:
//普通鍵.enter .tab.delete //(捕獲“刪除”和“退格”鍵).space.esc.up.down.left.right//系統修飾鍵.ctrl.alt.meta.shift
例如(具體的鍵碼請看鍵碼對應表)
按 ctrl 才會觸發<input type="text" @keyup.ctrl="shout(4)">也可以鼠標事件+按鍵<input type="text" @mousedown.ctrl.="shout(4)">可以多按鍵觸發 例如 ctrl + 67<input type="text" @keyup.ctrl.67="shout(4)">
本文鏈接:http://www.www897cc.com/showinfo-26-79138-0.html面試官最喜歡問的 14 種Vue修飾符
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 適用于Vue 3的高顏值UI組件庫!