Vue修飾符

Vue提供了一些修飾符,這些修飾符在使用起來很是方便,好比阻止默認事件、冒泡等。vue

.lazy:瀏覽器

v-modeil不用多說,輸入框改變,這個數據就會改變,lazy這個修飾符會在光標離開input框纔會更新數據:bash

<input type="text" v-model.lazy="value">
複製代碼

.trim:性能

輸入框過濾首尾的空格:ui

<input type="text" v-model.trim="value">
複製代碼

.number:this

先輸入數字就會限制輸入只能是數字,先字符串就至關於沒有加number,注意,不是輸入框不能輸入字符串,是這個數據是數字:spa

<input type="text" v-model.number="value">
複製代碼

.stop:雙向綁定

阻止事件冒泡,至關於調用了event.stopPropagation()方法。這個應該不須要解釋:code

<button @click.stop="test">test</button>
複製代碼

.prevent:component

阻止默認行爲,至關於調用了event.preventDefault()方法,好比表單的提交、a標籤的跳轉就是默認事件:

<a @click.prevent="test">test</a>
複製代碼

.self:

只有元素自己觸發時才觸發方法,就是隻有點擊元素自己纔會觸發。好比一個div裏面有個按鈕,div和按鈕都有事件,咱們點擊按鈕,div綁定的方法也會觸發,若是div的click加上self,只有點擊到div的時候纔會觸發,變相的算是阻止冒泡:

<div @click.self="test"></div>
複製代碼

.once:

只能用一次,不管點擊幾回,執行一次以後都不會再執行:

<div @click.once="test"></div>
複製代碼

.capture:

事件的完整機制是捕獲-目標-冒泡,事件觸發是目標往外冒泡,好比:

<div @click="test(1)">  <button @click="test(2)">test</button></div>

順序是2 1,capture的做用就是讓這個順序相反:

<div @click.capture="test(1)">  <button @click="test(2)">test</button></div>
複製代碼

先1 後2。

.passive:

其實我不怎麼理解,官網解釋說能夠提高移動端的性能,查了查,大概解釋就是每次滾動都會有一個默認事件觸發,加了這個就是告訴瀏覽器,不須要查詢,不須要觸發這個默認事件preventDefault:

<!-- 滾動事件的默認行爲 (即滾動行爲) 將會當即觸發 --> 

<!-- 而不會等待 `onScroll` 完成 -->

 <!-- 這其中包含 `event.preventDefault()` 的狀況 -->

<div v-on:scroll.passive="onScroll">...</div>
複製代碼

.native:

組件綁定當前組件的事件是不會觸發的,須要用native才能觸發:

<My-component @click="shout(3)"></My-component>
複製代碼

鼠標.left、.reight、.middle:

就是鼠標點擊的時候就觸發:

<button @click.right="test">test</button>

複製代碼

.keyCode:

監聽按鍵的指令,具體能夠查看vue的鍵碼對應表:

<input type="text" @keyup.enter="test(1)">

<button @click.enter="test(1)">test</button>
複製代碼

注意,只有你點擊過一次或者聚焦到這個輸入框才能使用鍵盤觸發。

.exact:

系統修飾鍵,只有按着這個鍵而後用鼠標點擊纔會觸發,官網解釋:

<!-- 即便 Alt 或 Shift 被一同按下時也會觸發 -->

 <button @click.ctrl="onClick">A</button>

<!-- 有且只有 Ctrl 被按下的時候才觸發 -->

<button @click.ctrl.exact="onCtrlClick">A</button>

<!-- 沒有任何系統修飾符被按下的時候才觸發 -->
<button @click.exact="onClick">A</button>
複製代碼

可是我試了一下沒有用。

.sync

對prop進行雙向綁定,我的暫時用不習慣:

//父組件

<fa-comp :fatest.sync="test"></fa-comp>

//子組件

this.$emit('update:fatest,sontest); 複製代碼

相關文章
相關標籤/搜索