這篇文章主要介紹了Vue.directive 自定義指令,文中經過示例代碼介紹的很是詳細,寫的十分的全面細緻,具備必定的參考價值,對此有須要的朋友能夠參考學習下。若有不足之處,歡迎批評指正。javascript
1、什麼是全局API?html
全局API並不在構造器裏,而是先聲明全局變量或者直接在Vue上定義一些新功能,Vue內置了一些全局API,好比咱們今天要學習的指令Vue.directive。說的簡單些就是,在構造器外部用Vue提供給咱們的API函數來定義新的功能。前端
2、Vue.directive自定義指令vue
咱們在第一季就學習了內部指令,咱們也能夠定義一些屬於本身的指令,好比咱們要定義一個v-jspang的指令,做用就是讓文字變成綠色。 在自定義指令前咱們寫一個小功能,在頁面上有一個數字爲10,數字的下面有一個按鈕,咱們每點擊一次按鈕後,數字加1.java
3、自定義指令中傳遞的三個參數node
el: 指令所綁定的元素,能夠用來直接操做DOM。 binding: 一個對象,包含指令的不少信息。 vnode: Vue編譯生成的虛擬節點。express
4、自定義指令的生命週期app
自定義指令有五個生命週期(也叫鉤子函數),分別是 bind,inserted,update,componentUpdated,unbind bind:只調用一次,指令第一次綁定到元素時調用,用這個鉤子函數能夠定義一個綁定時執行一次的初始化動做。 inserted:被綁定元素插入父節點時調用(父節點存在便可調用,沒必要存在於document中)。 update:被綁定於元素所在的模板更新時調用,而不管綁定值是否變化。經過比較更新先後的綁定值,能夠忽略沒必要要的模板更新。jsp
✧在此我向你們推薦一個前端全棧開發交流圈:619586920 突破技術瓶頸,提高思惟能力函數
componentUpdated:被綁定元素所在模板完成一次更新週期時調用。 unbind:只調用一次,指令與元素解綁時調用。
<!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(){//綁定到節點 console.log('2 - inserted'); }, update:function(){//組件更新 console.log('3 - update'); }, componentUpdated:function(){//組件更新完成 console.log('4 - componentUpdated'); }, unbind:function(){//解綁 console.log('5 - unbind'); } // ✧在此我向你們推薦一個前端全棧開發交流圈:619586920 突破技術瓶頸,提高思惟能力 }) 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(){//綁定到節點 console.log('2 - inserted'); }, update:function(){//組件更新 console.log('3 - update'); }, componentUpdated:function(){//組件更新完成 console.log('4 - componentUpdated'); }, unbind:function(){//解綁 console.log('1 - bind'); }
結語
感謝您的觀看,若有不足之處,歡迎批評指正。