Vue 自定義指令(全域性定義 區域性定義)

2021-10-23 22:39:07 字數 2158 閱讀 4325

前面已經介紹了幾個系統提供的指令,比如「v-text」、「v-bind」、「v-on」等等,本文我們來介紹下自定義指令的實現。

我們想建立乙個自動獲取焦點的指令,該功能其實可以通過document.getelementbyid('search').focus()來實現,但此處我們專門來介紹下自定義指令的實現方式。

效果實現

vue.

directive

("focus",,

inserted:

function

(el)

, updated:

function

(el)

})

>

姓名:type

="text"

v-focus

>

>

密碼:type

我們可以看到重新整理後搜尋框獲取到了焦點,說明我們建立的v-focus指令生效了。現在我們來具體解釋一下。

指令名稱

vue中所有的指令,在呼叫的時候,都以v-開頭,但是在定義的時候我們不用新增v-字首。

引數方法

定義 v-focus 指令時,第二個引數是乙個物件,這個物件身上有一些指令相關的函式,這些函式可以在特定的階段執行相關的操作。

鉤子方法

說明bind

當指令繫結到元素上時,會立即執行bind 函式,只執行一次

inserted

元素插入到dom中時,會執行 inserted 函式,觸發1次

updated

當vnode更新時,會執行 updated, 可能會觸發多次

方法的引數值

第乙個引數,永遠是el ,表示被繫結了指令的那個元素,這個el引數,是乙個原生的js物件。

第二個引數,binding:乙個物件,包含以下屬性:

引數說明

name

指令名,不包括 v- 字首。

value

指令的繫結值

oldvalue

指令繫結的前乙個值,僅在 update 和 componentupdated 鉤子中可用。無論值是否改變都可用。

expression

字串形式的指令表示式。例如 v-my-directive=「1 + 1」 中,表示式為 「1 + 1」。

arg傳給指令的引數,可選。例如 v-my-directive:foo 中,引數為 「foo」。

modifiers

乙個包含修飾符的物件。例如 v-my-directive.foo.bar 中,修飾符物件為 。

方法的使用場景

案例:定義乙個設定顏色屬性的指令:v-color。

vue.

directive

("color",,

})

>

姓名:type

="text"

v-focus

v-color="

'red'

">

>

密碼:type

和過濾器一樣,全域性指令所有的vm物件都可以共享,我們也可以為每個vm物件建立私有的指令,方法如下。

>

姓名:type

="text"

v-border="

'red'

">

>

密碼:type

="password"

>

div>

vue自定義指令(全域性 區域性)

vue除了提供了缺省內置的指令外,還允許開發人員根據實際情況自定義指令,它的作用價值在於當開發人員在某些場景下需要對普通dom元素進行操作的時候。vue自定義指令和元件一樣存在著全域性註冊和區域性註冊兩種方式。全域性指令 效果 區域性指令 顧名思義 區域性指令定義在組建內,寫法上最大的不同是定義時d...

vue自定義全域性和區域性指令

一 介紹 1 除了核心功能缺省內置的指令 v model和v show vue 也允許註冊自定義指令。2 自定義指令的分類 1 全域性指令 2 區域性指令 3 自定義全域性指令格式 vue.directive 指令id,指令定義物件 4 自定義區域性指令格式 略二 指令物件中的鉤子函式 乙個指令定義...

vue自定義指令 區域性指令和全域性指令

以後都優先用inserted,因為inserted裡獲取到的資訊比bind中多一些 在鉤子函式內部可以通過第二個引數binding的value屬性,獲取到指令繫結的引數 指令的修飾符可以用來做一些特定的邏輯判斷處理 注意 在鉤子函式內部的this不是vm例項,可以通過第三個引數vnode.conte...