c_pat_拓撲序列(減入度+注意輸入坑)
除了核心功能預設內建的指令 (如v-model 和 v-show等),Vue 也允許註冊自定義指令。有的情況下,對普通 DOM 元素進行底層操作,這時候就會用到自定義指令。
自定義指令分為:全域性自定義指令,區域性自定義指令。
- 使用
Vue.directive('focus',{bind(el,binding){},inserted(){}})
進行全域性自定義指令 - 引數1 :指令的名稱
- 引數2: 是一個物件,這個物件身上,有鉤子函式.
鉤子函式
一個指令定義物件可以提供如下幾個鉤子函式 (均為可選):
inserted:被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。
bind:只調用一次,指令第一次繫結到元素時呼叫。在這裡可以進行一次性的初始化設定。
update:所在元件的 VNode 更新時呼叫,但是可能發生在其子 VNode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前後的值來忽略不必要的模板更新 (詳細的鉤子函式引數見下)。
componentUpdated:指令所在元件的 VNode 及其子 VNode 全部更新後呼叫。
unbind:只調用一次,指令與元素解綁時呼叫。
指令鉤子函式會被傳入以下引數:
el:指令所繫結的元素,可以用來直接操作 DOM 在每個函式中,第一個引數el ,表示被綁定了指令的那個元素,這個 el 引數,是一個原生的JS物件,。
binding:一個物件,包含以下屬性:
name:指令名,不包括 v- 字首。
value:指令的繫結值,例如:v-my-directive=“1 + 1” 中,繫結值為 2。
oldValue:指令繫結的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
expression:字串形式的指令表示式。例如 v-my-directive=“1 + 1” 中,表示式為 “1 + 1”。
arg:傳給指令的引數,可選。例如 v-my-directive:foo 中,引數為 “foo”。
modifiers:一個包含修飾符的物件。例如:v-my-directive.foo.bar 中,修飾符物件為 { foo: true, bar: true }。
vnode: Vue編譯生成的虛擬節點。移步 VNode API 來了解更多詳情。
oldVnode:上一個虛擬節點,僅在 update 和 componentUpdated 鉤子中可用。