詳解Vue.directive 自定義指令
一、什么是全局API?
全局API并不在構(gòu)造器里,而是先聲明全局變量或者直接在Vue上定義一些新功能,Vue內(nèi)置了一些全局API,比如我們今天要學(xué)習(xí)的指令Vue.directive。說(shuō)的簡(jiǎn)單些就是,在構(gòu)造器外部用Vue提供給我們的API函數(shù)來(lái)定義新的功能。
二、Vue.directive自定義指令
我們?cè)诘谝患揪蛯W(xué)習(xí)了內(nèi)部指令,我們也可以定義一些屬于自己的指令,比如我們要定義一個(gè)v-jspang的指令,作用就是讓文字變成綠色。
在自定義指令前我們寫一個(gè)小功能,在頁(yè)面上有一個(gè)數(shù)字為10,數(shù)字的下面有一個(gè)按鈕,我們每點(diǎn)擊一次按鈕后,數(shù)字加1.
三、自定義指令中傳遞的三個(gè)參數(shù)
el: 指令所綁定的元素,可以用來(lái)直接操作DOM。
binding: 一個(gè)對(duì)象,包含指令的很多信息。
vnode: Vue編譯生成的虛擬節(jié)點(diǎn)。
四、自定義指令的生命周期
自定義指令有五個(gè)生命周期(也叫鉤子函數(shù)),分別是 bind,inserted,update,componentUpdated,unbind
- 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)用,而無(wú)論綁定值是否變化。通過(guò)比較更新前后的綁定值,可以忽略不必要的模板更新。
- componentUpdated:被綁定元素所在模板完成一次更新周期時(shí)調(diào)用。
- unbind:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="../assets/js/vue.js"></script> <title>vue.directive 自定義指令</title> </head> <body> <h1>vue.directive 自定義指令</h1> <hr> <div id="app"> <div v-jspang="color" id="aaa"> {{num}} </div> <p> <button @click='jia'>加分</button> </p> <p> <button onclick='unbind()'>解綁</button> </p> </div> <script type="text/javascript"> function unbind(){ app.$destroy(); } //自定義指令 Vue.directive('jspang',{ 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>' ; **/ el.style='color:'+binding.value; console.log('1 - bind'); }, inserted:function(){//綁定到節(jié)點(diǎn) console.log('2 - inserted'); }, update:function(){//組件更新 console.log('3 - update'); }, componentUpdated:function(){//組件更新完成 console.log('4 - componentUpdated'); }, unbind:function(){//解綁 console.log('5 - unbind'); } }) var app=new Vue({ el:'#app', data:{ color:'green', num:10 }, methods:{ jia:function(){ this.num++; } } }) </script> </body> </html>
bind:function(){//被綁定 console.log('1 - bind'); }, inserted:function(){//綁定到節(jié)點(diǎn) console.log('2 - inserted'); }, update:function(){//組件更新 console.log('3 - update'); }, componentUpdated:function(){//組件更新完成 console.log('4 - componentUpdated'); }, unbind:function(){//解綁 console.log('1 - bind'); }
以上所述是小編給大家介紹的Vue.directive 自定義指令詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
使用vue+element?ui實(shí)現(xiàn)走馬燈切換預(yù)覽表格數(shù)據(jù)
這次做項(xiàng)目的時(shí)候遇到需要切換預(yù)覽表格數(shù)據(jù)的需求,所以下面這篇文章主要給大家介紹了關(guān)于使用vue+element?ui實(shí)現(xiàn)走馬燈切換預(yù)覽表格數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08sublime如何配置開發(fā)VUE環(huán)境自動(dòng)格式化代碼
這篇文章主要介紹了sublime如何配置開發(fā)VUE環(huán)境自動(dòng)格式化代碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue實(shí)現(xiàn)選項(xiàng)卡及選項(xiàng)卡切換效果
這篇文章主要介紹了vue實(shí)現(xiàn)選項(xiàng)卡選項(xiàng)卡切換效果,這里的Vue以單文件的形式引入,另外代碼在實(shí)現(xiàn)上會(huì)一步步的進(jìn)行優(yōu)化。需要的朋友可以參考下2018-04-04前端vue3中的ref與reactive用法及區(qū)別總結(jié)
這篇文章主要給大家介紹了關(guān)于前端vue3中的ref與reactive用法及區(qū)別的相關(guān)資料,關(guān)于ref及reactive的用法,還是要在開發(fā)中多多使用,遇到響應(yīng)式失效問(wèn)題,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08解決vue 中 echart 在子組件中只顯示一次的問(wèn)題
vue推薦組件化開發(fā),所以就把每個(gè)圖表封裝成子組件,然后在需要用到該圖表的父組件中直接使用。接下來(lái)給大家介紹vue 中 echart 在子組件中只顯示一次的問(wèn)題,需要的朋友參考下吧2018-08-08vue $nextTick實(shí)現(xiàn)原理深入詳解
這篇文章主要介紹了vue $nextTick實(shí)現(xiàn)原理深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10vue props 單項(xiàng)數(shù)據(jù)流實(shí)例分享
在本篇文章里小編給大家分享的是一篇關(guān)于vue props 單項(xiàng)數(shù)據(jù)流實(shí)例分享內(nèi)容,需要的朋友們可以參考下。2020-02-02Vue如何為GET或POST請(qǐng)求設(shè)置請(qǐng)求頭
這篇文章主要介紹了Vue如何為GET或POST請(qǐng)求設(shè)置請(qǐng)求頭,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04