指令和修飾符
v-on:
修飾符
.stop - 調用 event.stopPropagation()。
.prevent - 調用 event.preventDefault()。
.capture - 添加事件偵聽器時使用 capture 模式。
.self - 隻當事件是從偵聽器綁定的元素本身觸發時才觸發回調。
.{keyCode | keyAlias} - 隻當事件是從特定鍵觸發時才觸發回調。
.native - 監聽元件根元素的原生事件。
.once - 隻觸發一次回調。
.left - (2.2.0) 隻當點選滑鼠左鍵時觸發。
.right - (2.2.0) 隻當點選滑鼠右鍵時觸發。
.middle - (2.2.0) 隻當點選滑鼠中鍵時觸發。
.passive - (2.3.0) 以 { passive: true } 模式添加偵聽器
-
.stop
調用 event.stopPropagation()
阻止向上冒泡
點選子級,不會觸發父級的點選事件
<div class="app" @click.stop></div> <div class="app" @click.stop="handle"></div>
-
.capture
(en:捕獲,捕捉) 即是給元素添加一個監聽器,當元素發生冒泡時,先觸發帶有該修飾符的元素。若有多個該修飾符,則由外而内觸發。
就是誰有該事件修飾符,就先觸發誰。
-
隻有當自身被觸發(如點選)時才會生效.(例如子元素被點選不會觸發父元素).self
-
(如 .13 => .enter).keyCode
<input @keyup.enter="handle" /> <!-- 等同于 --> <input @keyup.13="handle" />
-
自定義元件直接觸發(如點選)是無效的,隻能通過子元件向父元件傳遞事件的方式,或者添加.navive
修飾符.native
<div class="app" @click="handle"> <!-- 子元件如果不加上 .native ,click事件無效 --> <custom-div @click.native="handleComponent"></custom-div> </div> <script> new Vue({ el:'.app', components:{ 'custom-div':{ template:` <div class="component"></div> `, } }, }) </script>
v-bind
修飾符:
- prop - 被用于綁定 DOM 屬性 (property)。(差别在哪裡?)
- camel - (2.1.0+) 将 kebab-case 特性名轉換為 camelCase. (從 2.1.0 開始支援)
- sync (2.3.0+) 文法糖,會擴充成一個更新父元件綁定值的 v-on 偵聽器。
.sync
是一個文法糖,作用(雙向綁定的另一種方式)
https://www.jianshu.com/p/6b062af8cf01
<cpt :title.sync="title"></cpt> <!-- => --> <cpt :title="title" @update:title="(val) => title = val"></cpt>
/*需要顯式觸發 update 事件*/ this.$emit('update:foo', newValue)
v-model
https://www.jianshu.com/p/3dbbbc7a259c
修飾符:
- lazy - 取代 input 監聽 change 事件
<!-- 預設的v-model是沒輸入一個字元自動更新一次msg --> <!-- .lazy => 當 input 失去焦點或者按下enter鍵後才更新msg --> <input type="text" v-model.lazy="msg">
- number - 輸入字元串轉為數字
- trim - 輸入首尾空格過濾