vue自定義指令

2021-10-03 21:35:31 字數 2158 閱讀 7741

angularjs的啟發,vue內建了一些非常有用的指令,比如v-htmlv-once等,每個指令都有自身的用途。除了系統內部的指令,vue也允許註冊自定義指令。

全域性引入

建立乙個directive.js,**如下,然後在main.js中引入即可。

// 註冊乙個全域性自定義指令 `v-focus`

vue.directive('focus',

})

這裡有個函式簡寫形式,想在bindupdate時觸發相同行為,而不關心其它的鉤子。可以這樣寫:

vue.directive('focus', function (el, binding) )
區域性引入

如果想註冊區域性指令,元件中也接受乙個directives的選項:

directives: 

}}

然後就可以在模板中任何元素上使用新的v-focus屬性,如下:

自定義指令一共有5個鉤子函式:bindinsertedupdatecomponentupdateunbind

鉤子函式會被傳入以下引數:elbindingvnodeoldvnode

以上內容詳細可以參考官網對鉤子函式的簡介——鉤子函式 。不過有點非常重要的就是除了el之外,其它引數都應該是唯讀的,切勿進行修改。如果需要在鉤子之間共享資料,建議通過元素的dataset來進行。

指令的使用方式主要是以下四種:

場景一: 限制輸入框輸入的最大長度(不包含空格)

指令名為limit,指令的繫結值為可輸入最大長度。

//template

vue.directive('limit', function (el, binding, vnode) );

});

場景二:通過指令實現防抖

指令名為debounce,傳給指令的引數為clickclick作為引數傳入的目的在於可以配置事件,通過傳keydownmouseover等也可以讓這個指令支援滑鼠或者鍵盤事件等等。而修飾符.stop或者.prevent可以配置事件冒泡和阻止預設事件等等。

//template

vue.directive('debounce', function (el, binding) , 300);

});});

以上是兩個簡單的例子,會發現用的最頻繁的是elbindingel表示元素本身,binding比較複雜了,它有以下屬性:

binding.valuebinding.expression可能會搞亂,binding.value獲取的是具體的方法或者數值,而binding.expression獲取的僅僅是方法名和值的表示式,舉個例子:

//template

vue.directive('test', function (el, binding) );

總的來說,指令是非常強大的,但是往往也很容易被開發者們所忽略,因為很多時候用工具類函式或者元件的方式也可以實現同樣的功能,不過學會指令的話肯定就是如虎添翼,作為乙個有要求的程式設計師,還是非常有必要掌握這個技能,分享個乾貨,這15個vue自定義指令,讓你的專案開發爽到爆。

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