Vue 自定義指令

2021-10-10 13:59:37 字數 1896 閱讀 4151

vue中所有指令都以(v-)開頭。

使用vue.directive(『name』,{})定義全域性指令。

引數一:指令的名稱,不需要加"v-"字首;呼叫時需要加上。

鉤子函式:

-

bind

()

只呼叫一次,指令在第一次繫結到元素身上時呼叫。

可以定義乙個在繫結時執行的初始化動作。

-

inserted

()

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

-

update

()

所在元件的vnode跟新時呼叫,可能觸發多次。但可能發生在其孩子的vnode跟新之前。

指令的值可能發生了改變也可能沒有。

-

componentupdated

()

所在元件的vnode和其孩子的vnode全部跟新時呼叫。

-

unbind

()

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

鉤子函式引數:

第乙個引數:永遠是el,表示繫結此自定義指令的元素,是個元素的js物件。

第二個引數:binding,是乙個物件,包含以下引數(列舉部分如下):

在vue例項中,增加directives屬性,指向乙個物件,自定義私有屬性。屬性名為自定義指令名,值為物件,內容為各個階段執行的函式(鉤子函式和引數同上)。

大多情況下,我們可能想在bind和update鉤子函式上做重複動作,並不關心其他鉤子函式,可以簡寫:

vue.

directive

('color-swatch'

,function

(el,binding)

);

私有也一樣。

自定義全域性指令,讓頁面剛載入完輸入游標在第二個輸入框。通過私有指令改變樣式。

>

>

charset

="utf-8"

>

>

title

>

src=

"">

script

>

head

>

>

>

v-fontweight

="900"

v-color-swatch="

'red'

">

畫畫span

>

type

="text"

>

type

="text"

v-focus

>

div>

>

//每個鉤子函式的第乙個引數永遠是el,表示繫結這個指令的當前元素,是個原生的js物件

vue.

directive

('focus',,

//表示元素插入到dom中的時候,會執行inserted函式,觸發一次

inserted

(el)

,//當vnode跟新的時候,會執行updated函式,可能會觸發多次

updated()

});const vm =

newvue(,

},'color-swatch'

(el, binding)}}

);script

>

body

>

html

>

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 拓展...