vue的自定義指令與例項

2021-10-06 03:20:20 字數 1581 閱讀 1265

寫這篇的原因**於面試題,具體內容可參考官方文件

vue 除了核心功能缺省內置的指令(v-if,v-model,v-show…)之外,還可以自定義自己需要的指令進行復用,對普通 dom 元素進行底層操作;你可以註冊全域性指令(vue.directive( id, function (el, binding) {} )這個是簡寫,下面有全的)和區域性指令(vue例項中新增 directives 物件 資料註冊區域性自定義指令),這點和元件一樣。

乙個指令定義物件可以提供如下幾個鉤子函式(均為可選):

bind:只呼叫一次,指令第一次繫結到元素時呼叫。在這裡可以進行一次性的初始化設定。

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

update:所在元件的 vnode (vue 編譯生成的虛擬節點) 更新時呼叫。

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

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

鉤子函式引數

指令鉤子函式會傳入以下引數:

el:指令所繫結的元素,可以直接用來操作dom

binding:乙個物件,包含以下的屬性(property):

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

vue.directive( id, }),一般寫在公共/主的.js檔案(index.js/main.js),在.vue檔案中呼叫

例子: 時間格式化(時間戳到日期轉換)

vue.

directive

("time",-

$-$`

;}})

//呼叫 使用v-time

"date"

>

<

/td>

// date為日期欄位名,非固定區域性指令就比較簡單了,通過在vue例項中新增 directives 物件資料註冊區域性自定義指令就可;就是說在.vue 的檔案中建立使用;

class

="test"

>

"../assets/image/test.png" alt=

"預設圖" v-img=

"url"

>

<

/div>

<

/template>

export

default},

directives:}}

,mounted()

, methods:

}<

/script>

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