Vue自定義指令

2021-08-15 22:05:39 字數 1672 閱讀 9204

vue有很多內建的指令,比如說v-on,v-model,v-clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了--

vue的自定義指令分類:

全域性指令和區域性指令

vue指令的定義和用法(以全域性指令為例):

1.語法:vue.directive(指令id,定義物件),在這裡「指令id」就是指令的名字,「定義物件」就是乙個物件,包含有該指令的鉤子函式,例如:

vue.directive("commd",,

//被繫結有自定義指令的元素插入到dom中時呼叫,在這裡是插入到了#container中(簡言之,元素插入到dom元素中)

inserted:function(),

// 當被繫結的元素所在模板更新時呼叫

update:function(),

// 當被繫結的元素所在模板完成一次更新時呼叫(模板更新後呼叫)

componentupdated:function(),

// 當指令和元素解綁的時候呼叫,只執行一次(因為畢竟解綁一次就完成了嘛!)

unbind:function()

})

這裡的bind,inserted,update等等都是該指令的鉤子函式,所謂的鉤子函式就是在該指令不同的階段執行不同的方法,一般常用的鉤子函式是bind和update,最常用的是bind;

鉤子函式的引數:

因為比較常用的鉤子函式是bind階段的,所以就以該階段的鉤子函式為例:

vue.directive("hello",

})

el:"#container",

data:,

// 執行該方法時,由於改變了greeting,所以模板也發生了改變,執行update鉤子函式

methods:}})

html部分

以上是怎麼定義全域性指令的,那麼該指令是怎麼用的呢?如下:

自定義指令和內建指令一樣都是需要在前面加字首「v-」才起作用;

vue全域性指令的簡化寫法:

1.語法:vue.directive("指令id",callback),在這裡的callback函式會在指令bind和update的時候執行和呼叫,例如:

vue.directive("lala",function())

這裡的function函式只有在bind和update階段的時候會執行;

區域性自定義指令:

語法:寫在vue例項中的directives選項中:

el:"#container",

data:,

// 執行該方法時,由於改變了greeting,所以模板也發生了改變,執行update鉤子函式

methods:

},directives:,

//inserted:function(){},

//....}}

})

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

Vue自定義指令

其中,引數1是指令的名稱,注意,在定義的時候,指令的名稱前面,不需要加 v 字首了,在呼叫的時候,必須在指令名稱前面加上 v 字首來進行呼叫。引數2 是乙個物件,在這個物件上,有一些指令相關的函式,這些函式可以在特定的階段,執行相關的操作。bind 每當指令繫結到元素上的時候,會立即執行這個 bin...