Vue中的自定義指令(directive)


在vue中除了一些內(nèi)置指令(v-if,v-model)外,我們還可以自定義一些指令,例如:


html結(jié)構(gòu)層

<p v-class=“ ‘red’ ”>我是全局自定義指令</p>


js行為層


<script>

// 注冊一個(gè)全局自定義指令 v-class

Vue.directive('class', {

// 當(dāng)綁定元素插入到 DOM 中。

inserted: function (el,value) {

el.style.color=value.value;

}

})

</script>


效果圖:


<div>

<input ? v-focus>

</div>


new Vue({

el:"#app",

// 注冊一個(gè)局部自定義指令 v-focus

directives:{

// 當(dāng)綁定元素插入到 DOM 中。

focus:{

inserted: function (el) {

// 聚焦元素

el.focus()

}

}

}

})

效果圖:


補(bǔ)充:鉤子函數(shù)

指令定義函數(shù)提供了幾個(gè)鉤子函數(shù)(可選):

bind: 只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用,用這個(gè)鉤子函數(shù)可以定義一個(gè)在綁定時(shí)執(zhí)行一次的初始化動(dòng)作。

inserted: 被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用(父節(jié)點(diǎn)存在即可調(diào)用,不必存在于 document 中)。

update: 所在組件的 VNode 更新時(shí)調(diào)用,但是可能發(fā)生在其孩子的 VNode 更新之前。指令的值可能發(fā)生了改變也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細(xì)的鉤子函數(shù)參數(shù)見下)。

componentUpdated: 所在組件的 VNode及其孩子的 VNode全部更新時(shí)調(diào)用。

unbind: 只調(diào)用一次, 指令與元素解綁時(shí)調(diào)用。

接下來我們來看一下鉤子函數(shù)的參數(shù) (包括el,binding,vnode,oldVnode) 。

在vue中除了一些內(nèi)置指令(v-if,v-model)外,我們還可以自定義一些指令,例如:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容