本文簡述了Vue中的按鍵修飾符
引入樣例
- 在生活中,常常有這樣的場景:按下
Enter
提交,或者按下Esc
退出全屏等等,這些都是與鍵盤有關的操作 - 同理,我們在Vue中,也可以透過在
v-on
新增按鍵修飾符
將某個按鍵對映到對應的事件上,用於監聽按鍵事件 - 舉慄引入:
<div id="app"> 序號:<input type="text" v-model="idValue" /> 車名:<input type="text" v-model="nameValue" @keyup.enter="add"> <p v-for="item in list"> 序號:{{item.id}} 車名:{{item.name}} </p> </div> <script type="text/javascript"> var app = new Vue({ el: '#app', data: { idValue: '', nameValue: '', list: [ {id:1,name:'奧迪'}, {id:2,name:'賓士'}, ] }, methods: { add(){ this.list.unshift({ id: this.idValue, name : this.nameValue }) } } }) </script>
- 那麼,結果就是,我們輸入
id
與name
,按下Enter
,即可將輸入的內容新增到list
中並透過v-for
顯示出來
- 那麼,結果就是,我們輸入
- 我們詳細分析一下剛才的流程:
- 我們在第二個
<input>
框裡面新增了keyup
事件,即鍵盤按下抬起時觸發 - 後面的
.enter
即為按鍵修飾符,定義哪個按鍵會觸發該事件(這裡是回車觸發) - 觸發的事件反映在
add()
方法上,即回車就觸發add()
方法
- 我們在第二個
按鍵修飾符別名
- 其實,除了
.enter
以外,Vue還定義了許多按鍵修飾符,列舉如下:.enter
Enter鍵.tab
tab鍵.delete
刪除(或退格)鍵.esc
Esc鍵.space
空格鍵.up
↑鍵down
↓鍵left
←鍵right
→鍵
- 其實,你還可以透過全域性
config.keyCodes
物件,來實現:自定義鍵盤修飾符別名 - 注:不管是使用鍵盤名稱還是使用鍵盤碼都要防止快捷鍵的衝突,快捷鍵衝突的時候會不起作用。
關於按鍵碼
- 在之前,我們不僅可以使用按鍵修飾符別名,還可以使用
按鍵碼
來作為修飾符使用:- 比如
f2
的按鍵碼為113
,那麼我們可以透過@keyup.113="..."
來使用該按鍵修飾符
- 比如
- 但是在官方文件中,已經明確提到:
keyCode
的事件用法已經被廢棄了並可能不會被最新的瀏覽器支援 - 所以,建議的是使用按鍵修飾符別名...
系統修飾符
- 僅在按下相應按鍵時才觸發滑鼠或鍵盤事件的監聽器,簡單地說就是,配合其他按鍵才能使用
- 其修飾符有:
.ctrl
.alt
.shift
.meta
-
例如:
<!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="...">...</div>
.exact
修飾符.exact
修飾符允許你控制由精確的系統修飾符組合觸發的事件<!-- Alt 或 Shift 被一同按下時也會觸發 --> <button @click.ctrl="onClick">A</button> <!-- 有且只有 Ctrl 被按下的時候才觸發 --> <button @click.ctrl.exact="onCtrlClick">A</button> <!-- 沒有任何系統修飾符被按下的時候才觸發 --> <button @click.exact="onClick">A</button>
本作品採用《CC 協議》,轉載必須註明作者和本文連結