除了核心功能默認內置的指令 (v-model 和 v-show),Vue 也允許注冊自定義指令。注意,在 Vue2.0 中,代碼復用和抽象的主要形式是組件。然而,有的情況下,你仍然需要對普通 DOM 元素進行底層操作,這時候就會用到自定義指令。舉個聚焦輸入框的例子,如下:(咳咳,借官網的用一用)
1、定義全局的自定義變量
main.js
Vue.directive('color',{
inserted(el){
// 各單位注意,這里的el獲取的是標簽元素,說白了就是可以直接操作DOM
console.log(el)
el.style.color = "red"
}
})
app.vue,這里直接寫v-color就可以;
<div >前端偽大叔</div> <div v-color>前端偽大叔</div>

2、自定義指令中,添加屬性;
Vue.directive('color',{
bind(el,binding){
switch(binding.value){
case 'red':
el.style.color = 'red'
break;
case 'blue':
el.style.color = 'blue'
break;
}
}
})
App.vue
<div >前端偽大叔</div> <div v-color="'red'">前端偽大叔</div> <div v-color="'blue'">前端偽大叔</div>
可以通過給自定義的屬性,添加屬性的方式來修改顏色;當然不僅僅只能修改顏色這么簡單,因為el直接獲得了DOM,所以你懂得!

3、組件內指令-只有自己組件可以使用
注意:directives是一個對象,里面定義的自定義指令也是對象!
// template <div >前端偽大叔</div> <div v-color>前端偽大叔</div> // script // 這里是對象 directives:{ // 每個指令都是一個對象 color:{ inserted(el){ el.style.color = 'cyan' } } }

4、組件內的自定義指令,增加屬性
// template <div v-color="'red'">前端偽大叔</div> <div v-color="'blue'">前端偽大叔</div> // script // 這里是對象 directives:{ // 每個指令都是一個對象 color:{ bind(el,binding){ if(binding.value == 'red'){ el.style.color = 'red' }else if (binding.value = 'blue'){ el.style.color = 'blue' } } } }

給大家奉上地址:https://cn.vuejs.org/v2/guide/custom-directive.html
如果大家喜歡的話,歡迎關注“前端偽大叔”我將為您不間斷的分享前端學習知識!

