Vue自定義指令

2021-09-25 02:16:58 字數 1549 閱讀 9685

#

全域性指令

除了核心功能缺省內置的指令 (v-model 和 v-show),vue 也允許註冊自定義指令。

這裡以乙個自動聚焦的指令為例:

>

type

="text"

v-focus

>

div>

>

//定義時只需寫指令名,呼叫時前加 v-

vue.

directive

("focus",}

)var vm =

newvue()

script

>

開啟頁面可以看到這裡的輸入框自動聚焦了。以上就是乙個最簡單的構造自定義全域性指令的語法,這裡的inserted是乙個鉤子,用來設定該指令的執行時機。稍後做詳解。

#區域性指令

如同元件和過濾器一樣,自定義指令也可以設定為區域性指令,其具體操作如下

var vm =

newvue(}

}})

#鉤子函式

在指令函式中,我們看到了乙個很有意思的東西——inserted,那麼這個東西具體怎麼使用呢?我們繼續來看。

每乙個指令定義物件可以提供如下幾個鉤子函式 (均為可選,三個加粗的為常用指令):

bind:只呼叫一次,指令第一次繫結到元素時呼叫。在這裡可以進行一次性的初始化設定。也就是在元素繫結指令的時候,此時還沒有插入dom。

inserted:被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。

update:所在元件的 vnode 更新時呼叫,但是可能發生在其子 vnode 更新之前。

componentupdated:指令所在元件的 vnode 及其子 vnode 全部更新後呼叫。

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

這裡寫了乙個測試函式來看一下他的執行順序

可以看到在載入乙個介面時,指令會先和dom元素進行繫結,然後插入到dom樹中,由於沒有發生更新,銷毀等操作,所以沒有顯示其他幾項。

指令引數

vnode:vue 編譯生成的虛擬節點。

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

寫乙個測試鉤子,其中加入三個比較常用的引數

然後列印一下這些引數中的內容對照一下

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