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