Vue入門指南 自定義全域性指令和區域性指令

2021-10-02 06:57:27 字數 2271 閱讀 2282

三、以傳參的方式進行指令設定

四、函式簡寫

當開發需求做乙個自動獲取焦點事件的時候,我們最原生的做法就是通過獲取元素來註冊事件,

document.

getelementbyid

("search").

focus()

;

然而在vue中並不提倡我們直接操作dom元素。那我們該怎麼辦呢?這時候就需要我們自定義指令來實現這個功能了。

指令分為二種,一種是全域性自定義指令,另一種為區域性(私有)自定義指令。全域性自定義指令頁面任何地方都可以使用,而區域性自定義指令就只能在vue例項當前控制的區域使用。

1.自定義全域性指令

使用 vue.directive() 定義全域性的v-focus指令

一般常用的鉤子函式有三個

bind:每當指令繫結到元素上的時候,會立即執行這個 bind 函式,只執行一次。

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

update:所在元件的 vnode 更新時呼叫,但是可能發生在其子 vnode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前後的值來忽略不必要的模板更新

vue.

directive

("focus",,

inserted:

function

(el)

, updated:

function

(el)})

;

注意!!!:

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

我們在最開始在bind鉤子函式中呼叫了.focus()是並沒有效果的。是因為在元素剛繫結了指令的時候,還沒有 插入到 dom中去,這時候,呼叫 focus 方法並沒有作用。因為,乙個元素,只有插入dom之後才能獲取焦點。

.focus()為乙個行為。和js行為有關的操作,最好在 inserted 中去執行,反之js行為不生效。

2.自定義區域性指令

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

var vm =

newvue(,

methods:

,// 指令的定義

directives:}}

});

自定義指令的使用方式:

"text"

class

="form-control" v-focus /

>

當我們需要設定乙個字型顏色的指令,這時候我們就可以傳參的方式進行設定了。這時候就需要用到鉤子函式中的第二個引數binding。這個引數為乙個物件,其中包含了以下三個常用屬性(其它就不列舉了)

html:

"text"  v-color="'red'">
js:

vue.

directive

("color",}

);

注意!!!:

樣式只要通過指令繫結給了元素,不管這個元素有沒有被插入到頁面中去,這個元素肯定有了乙個內聯的樣式。 將來元素肯定會顯示到頁面中,這時候,瀏覽器的渲染引擎必然會解析樣式,應用給這個元素。所以可以在bind鉤子函式中直接生效,而不像前面.focus()行為只有在inserted鉤子函式才生效。

和樣式相關的操作,一般都可以在bind鉤子函式中執行。

很多時候,你可能想在 bind 和 update 時觸發相同行為,而不關心其它的鉤子。可以進行函式的簡寫:

directives:},

//↑上面為沒有簡寫的寫法

//↓下面為函式簡寫的寫法

fontsize:

function

(el, binding)

}

如果您也正在學習前端的路上,記得關注該博主,學習更多關於前端的知識~

博主主頁 poetic code

Vue 自定義全域性指令和私有指令

2.v if flag 指令將根據表示式 flag true或flase 的值的真假來插入 移除 元素。3.v show例項 v bind 指令將該元素的 href 屬性與表示式 url 的值繫結 5.v on 縮寫 它用於監聽 dom 事件 6.v model 指令來實現雙向資料繫結 src li...

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

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

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

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