詳解Vue.directive 自定義指令
一、什么是全局API?
全局API并不在構造器里,而是先聲明全局變量或者直接在Vue上定義一些新功能,Vue內置了一些全局API,比如我們今天要學習的指令Vue.directive。說的簡單些就是,在構造器外部用Vue提供給我們的API函數來定義新的功能。
二、Vue.directive自定義指令
我們在第一季就學習了內部指令,我們也可以定義一些屬于自己的指令,比如我們要定義一個v-jspang的指令,作用就是讓文字變成綠色。
在自定義指令前我們寫一個小功能,在頁面上有一個數字為10,數字的下面有一個按鈕,我們每點擊一次按鈕后,數字加1.
三、自定義指令中傳遞的三個參數
el: 指令所綁定的元素,可以用來直接操作DOM。
binding: 一個對象,包含指令的很多信息。
vnode: Vue編譯生成的虛擬節(jié)點。
四、自定義指令的生命周期
自定義指令有五個生命周期(也叫鉤子函數),分別是 bind,inserted,update,componentUpdated,unbind
- bind:只調用一次,指令第一次綁定到元素時調用,用這個鉤子函數可以定義一個綁定時執(zhí)行一次的初始化動作。
- inserted:被綁定元素插入父節(jié)點時調用(父節(jié)點存在即可調用,不必存在于document中)。
- update:被綁定于元素所在的模板更新時調用,而無論綁定值是否變化。通過比較更新前后的綁定值,可以忽略不必要的模板更新。
- 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(){//綁定到節(jié)點
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é)點
console.log('2 - inserted');
},
update:function(){//組件更新
console.log('3 - update');
},
componentUpdated:function(){//組件更新完成
console.log('4 - componentUpdated');
},
unbind:function(){//解綁
console.log('1 - bind');
}
以上所述是小編給大家介紹的Vue.directive 自定義指令詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
Vue使用 onMounted 確保在組件掛載后執(zhí)行異步操作示例詳解
在 Vue.js 或其他類似框架中,使用 onMounted 是為了確保在組件掛載后執(zhí)行異步操作,這篇文章主要介紹了Vue使用onMounted確保在組件掛載后執(zhí)行異步操作,需要的朋友可以參考下2023-06-06
使用Vite+Vue3+TypeScript?搭建開發(fā)腳手架的詳細過程
這篇文章主要介紹了Vite+Vue3+TypeScript?搭建開發(fā)腳手架的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02
Vue 使用 Mint UI 實現左滑刪除效果CellSwipe
這篇文章主要介紹了Vue 使用 Mint UI 實現左滑刪除效果CellSwipe,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-04-04
vue.js自定義組件實現v-model雙向數據綁定的示例代碼
這篇文章主要介紹了vue.js自定義組件實現v-model雙向數據綁定的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例
這篇文章主要給大家介紹了關于vue3.0中使用Element-Plus中Select下的filter-method屬性的相關資料,Filter-method用法是指從一組數據中選擇滿足條件的項,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下2023-12-12
Vue?2源碼閱讀?Provide?Inject?依賴注入詳解
這篇文章主要為大家介紹了Vue?2源碼閱讀?Provide?Inject?依賴注入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08

