原文地址html
在默認狀況下,v-model
在每次 input
事件觸發後將輸入框的值與數據進行同步 。你能夠添加 lazy
修飾符,從而轉變爲使用 change
事件進行同步:git
<!-- 在「change」時而非「input」時更新 --> <input v-model.lazy="msg" >
若是想自動將用戶的輸入值轉爲數值類型,能夠給 v-model
添加 number
修飾符函數
<input v-model.number="age" type="number">
效果:this
若是要自動過濾用戶輸入的首尾空白字符,能夠給 v-model
添加 trim
修飾符:spa
<div id='other'> <input v-model.trim='trim'> <p ref='tr'>{{trim}}</p> <button @click='getStr'>獲取</button> </div>
var other = new Vue({ el:'#other', data:{ trim:'' }, methods:{ getStr(){ console.log(this.$refs.tr.innerHTML) } } })
效果:操作系統
在事件處理程序中調用 event.preventDefault()
或 event.stopPropagation()
是很是常見的需求。儘管咱們能夠在方法中輕鬆實現這點,但更好的方式是:方法只有純粹的數據邏輯,而不是去處理 DOM 事件細節。code
爲了解決這個問題,Vue.js 爲 v-on
提供了事件修飾符。以前提過,修飾符是由點開頭的指令後綴來表示的。orm
<!-- 阻止單擊事件繼續傳播 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件再也不重載頁面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修飾符能夠串聯 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修飾符 --> <form v-on:submit.prevent></form> <!-- 添加事件監聽器時使用事件捕獲模式 --> <!-- 即元素自身觸發的事件先在此到處理,而後才交由內部元素進行處理 --> <div v-on:click.capture="doThis">...</div> <!-- 只當在 event.target 是當前元素自身時觸發處理函數 --> <!-- 即事件不是從內部元素觸發的 --> <div v-on:click.self="doThat">...</div>
注意:htm
使用修飾符時,順序很重要;相應的代碼會以一樣的順序產生。所以,用 v-on:click.prevent.self
會阻止全部的點擊,而 v-on:click.self.prevent
只會阻止對元素自身的點擊。blog
<!-- 點擊事件將只會觸發一次 --> <a v-on:click.once="doThis"></a>
在監聽鍵盤事件時,咱們常常須要檢查常見的鍵值。Vue 容許爲 v-on
在監聽鍵盤事件時添加按鍵修飾符:
<!-- 只有在 `keyCode` 是 13 時調用 `vm.submit()` --> <input v-on:keyup.13="submit">
記住全部的 keyCode
比較困難,因此 Vue 爲最經常使用的按鍵提供了別名:
<!-- 同上 --> <input v-on:keyup.enter="submit"> <!-- 縮寫語法 --> <input @keyup.enter="submit">
所有的按鍵別名:
.enter
.tab
.delete
(捕獲「刪除」和「退格」鍵).esc
.space
.up
.down
.left
.right
能夠用以下修飾符來實現僅在按下相應按鍵時才觸發鼠標或鍵盤事件的監聽器。
.ctrl
.alt
.shift
.meta
注意:在 Mac 系統鍵盤上,meta 對應 command 鍵 (⌘)。在 Windows 系統鍵盤 meta 對應 Windows 徽標鍵 (⊞)。在 Sun 操做系統鍵盤上,meta 對應實心寶石鍵 (◆)。在其餘特定鍵盤上,尤爲在 MIT 和 Lisp 機器的鍵盤、以及其後繼產品,好比 Knight 鍵盤、space-cadet 鍵盤,meta 被標記爲「META」。在 Symbolics 鍵盤上,meta 被標記爲「META」或者「Meta」。
例如:
<!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="doSomething">Do something</div>
注意:
請注意修飾鍵與常規按鍵不一樣,在和 keyup
事件一塊兒用時,事件觸發時修飾鍵必須處於按下狀態。換句話說,只有在按住 ctrl
的狀況下釋放其它按鍵,才能觸發 keyup.ctrl
。而單單釋放 ctrl
也不會觸發事件。若是你想要這樣的行爲,請爲 ctrl
換用 keyCode
:keyup.17。