Vue自定義指令詳解
Vue自定義指令
自定義指令
注冊一個(gè)全局指令v-focus,該指令的功能是在頁面加載時(shí)元素獲得焦點(diǎn)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../js/vue.js"></script> </head> <body> <div id="app"> <input v-fo> </div> <script> // 注冊自定義指令 Vue.directive('fo',{ inserted:function(el){ // 聚焦元素 el.focus() } }) new Vue({ el: '#app' }) </script> </body> </html>
打開界面光標(biāo)直接在輸入框內(nèi)
鉤子函數(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
:被綁定元素所在的模板更新時(shí)調(diào)用,而不論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新。componentUpdated
:被綁定元素所在模板完成一次更新周期時(shí)調(diào)用。unbind
:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用。
鉤子函數(shù)的參數(shù)主要有以下幾項(xiàng)
el
:指令所綁定的元素,可以用來直接操作DOM。binding
:一個(gè)對象,包含以下屬性name
:指令名,不包括v-前綴。value
:指令的綁定值,例如v-my-directive=“1+1”,value的值是2。oldValue
:指令綁定的前一個(gè)值,僅在update和componentUpdated鉤子中可用,無論值是否改變都可用。expression
:綁定值的表達(dá)式或變量名,例如v-my-directive=“1+1”,expression的值是"1+1"。arg
:傳給指令的參數(shù),例如v-my-directive:foo,arg的值是"foo"。modifiers
:一個(gè)包含修飾符的對象,例如v-my-directive.foo.bar,修飾符對象modifiers的值是{foo:true,bar:true}。vnode
:Vue編譯生成的虛擬節(jié)點(diǎn)。oldVnode
:上一個(gè)虛擬節(jié)點(diǎn),僅在update和componentUpdated鉤子中可用。
輸出相關(guān)屬性
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../js/vue.js"></script> </head> <body> <div id="app" v-hh:a.b.c="mess"> </div> <script> Vue.directive('hh',{ bind: function(el,binding,vnode){ var s = JSON.stringify el.innerHTML = 'name:'+s(binding.name)+'<br>'+ 'value:'+s(binding.value)+'<br>'+ 'expression:'+s(binding.expression)+'<br>'+ 'argument:'+s(binding.arg)+'<br>'+ 'modifiers:'+s(binding.modifiers)+'<br>'+ 'vnode keys:'+Object.keys(vnode).join(',') } }) new Vue({ el:'#app', data:{ mess:'abc' } }) </script> </body> </html>
運(yùn)用例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../js/vue.js"></script> </head> <body> <div id="app"> <div v-hh="{text:'123',c:'blue'}"></div> </div> <script> Vue.directive('hh',function(el,binding){ el.innerHTML=binding.value.text el.style.color=binding.value.c }) new Vue({ el:'#app' }) </script> </body> </html>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Vue3中使用pnpm搭建monorepo開發(fā)環(huán)境
這篇文章主要為大家介紹了Vue3中使用pnpm搭建monorepo開發(fā)環(huán)境示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Vue3實(shí)現(xiàn)九宮格抽獎(jiǎng)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Vue3實(shí)現(xiàn)九宮格抽獎(jiǎng)的功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下2022-09-09探秘Vue異步更新機(jī)制中nextTick的原理與實(shí)現(xiàn)
nextTick?是?Vue?提供的一個(gè)重要工具,它的作用主要體現(xiàn)在幫助我們更好地處理異步操作,下面就跟隨小編一起來探索一下nextTick的原理與實(shí)現(xiàn)吧2024-02-02解決vue v-for 遍歷循環(huán)時(shí)key值報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決vue v-for 遍歷循環(huán)時(shí)key值報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue如何實(shí)現(xiàn)本項(xiàng)目頁面之間跳轉(zhuǎn)
這篇文章主要介紹了vue如何實(shí)現(xiàn)本項(xiàng)目頁面之間跳轉(zhuǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue electron應(yīng)用調(diào)exe程序的實(shí)現(xiàn)步驟
這篇文章主要介紹了vue electron應(yīng)用調(diào)exe程序的實(shí)現(xiàn)步驟,用Python寫了一個(gè)本地服務(wù)編譯成exe程序,在electron程序啟動(dòng)后,自動(dòng)執(zhí)行exe程序,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-02-02vue3.0自定義指令(drectives)知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整體了一篇關(guān)于vue3.0自定義指令(drectives)知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以學(xué)習(xí)下。2020-12-12