Vue 自定義指令

2022-01-10 03:53:36 字數 1416 閱讀 6449

使用directive註冊全域性指令,我們自定義了指令v-focus:、

vue例項中使用directives選項來註冊區域性指令,這樣指令只能在這個例項中使用:

在乙個指令中,你可以指定下面的鉤子函式,如上述兩個示例中都具有inserted函式。

鉤子函式

描述bind()

只呼叫一次,指令第一次繫結到元素時呼叫,用這個鉤子函式可以定義乙個在繫結時執行一次的初始化動作

inserted()

被繫結元素插入父節點時呼叫(父節點存在即可呼叫,不必存在於 document 中)

update()

被繫結元素所在的模板更新時呼叫,而不論繫結值是否變化。通過比較更新前後的繫結值,可以忽略不必要的模板更新

componentupdated()

被繫結元素所在模板完成一次更新週期時呼叫

unbind()

只呼叫一次, 指令與元素解綁時呼叫

每個鉤子函式都有兩個常用引數,分別是elbinding

el代表dom節點本身,即元素。

binding是乙個指令物件,含有如下屬性:

屬性描述

name

指令名,不包含v-字首

value

指令的繫結值,如v-my-directive="1+1",則value是2

oldvalue

指令繫結的前乙個值,僅在 update和 componentupdated鉤子中可用。無論值是否改變都可用。

expression

繫結值的表示式或變數名。 例如 v-my-directive="1 + 1,expression 的值是「1 + 1」。

arg傳給指令的引數。例如 v-my-directive:foo, arg 的值是 "foo"

modifiers

乙個包含修飾符的物件。 例如: v-my-directive.foo.bar, 修飾符物件modifiers的值是

除此之外,還有兩個不太常用的引數,如下:

vnodevue編譯生成的虛擬節點。

oldvalue:上乙個虛擬節點,僅在updatecomponentupdated鉤子中可用。

如果你的指令只包含inserted鉤子函式,則可以進行簡寫:

v-rounoob=""

vue.directive('runoob', function (el, binding) )

Vue自定義指令

vue有很多內建的指令,比如說v on,v model,v clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了 vue的自定義指令分類 全域性指令和區域性指令 vue指令的定義和用法 以全域性指令為例 1.語法 vue.directive 指令id...

vue自定義指令

自定義指令主要有兩種方式。一是在元件裡以directives的選項來自定義指令的內容。這樣的自定義指令是區域性的自定義指令,只在當前的元件裡面才能使用。script export default directives arr arr.join el.style.csstext arr script ...

VUE 自定義指令

dom插入便獲取焦點 vue.directive focus 根據指令的值決定自否獲取焦點 vue.directive focus 注 被拖拽的元素必須有定位樣式 vue.directive drag function el,binding document.nm useup function 拓展...