vue自定義指令的使用(directive)

vue自定義指令的使用:

全局指令和局部指令:
  • 【全局指令】 使用Vue.diretive()來全局註冊指令。
  • 【 局部指令】 也可以註冊局部指令,組件或Vue構造函數中接受一個directives的選項。
  • 鉤子函數。指令定義函數提供了幾個鉤子函數(可選)。
  • 【bind】 只調用一次,指令第一次綁定到元素時調用,用這個鉤子函數可以定義一個 在綁定時執行一次的初始化動作。
  • 【inserted】 被綁定元素插入父節點時調用(父節點存在即可調用,不必存在於d ocument中)。
  • 【 update】 所在組件的VNode更新時調用,但是可能發生在其孩子的VNode更新之前 。指令的值可能發生了改變也可能沒有。但是可以通過比較更新前後的值來忽 略不必要的模板更新。
  • 【componentUpdated】 所在組件的VNode及其孩子的VNode全部更新時調用。
  • 【 unbind】 只調用一次,指令與元素解綁時調用。 鉤子函數參數
    鉤子函數被賦予了以下參數
    【el】 指令所綁定的元素,可以用來直接操作DOM。
    【 binding】 一個對象,包含以下屬性: name:指令名,不包括v-前綴。 value:指令的綁定值,例如:v-my-directive=“1+1”,value的值是2。 oldValue:指令綁定的前一個值,僅在update和componentUpdated鉤子中 可用。無論值是否改變都可用。 expression:綁定值的字符串形式。例如v-my-directive=“1+1”,expression 的值是"1+1"。 arg:傳給指令的參數。例如v-my-directive:foo,arg的值是"foo"。 modifiers:一個包含修飾符的對象。
    比如說:輸入框光標跳動。

有三個方法:

1.通過ref來獲取。
    <div>
      <input type="text" name="" id="" placeholder="請輸入" ref="userName">  
    </div>
      methods:{
           getFoucs(){
                 this.$refs.userName.focus();
                      }
               },
  mounted(){

     this.getFoucs()

           }
2.全局自定義指令來使用:

組件中:

//我們直接用v-focus  就可以調用這個方法
<div>
      <input type="text" name id placeholder="請輸入" v-focus/>
    </div>

在main.js

Vue.directive('focus',{
  inserted: function(el,binding){
    //el:指令綁定的元素
    //binding.name指令名	binding.value綁定值	bingding.expression綁定至(字符串形式)
    el.focus(); //拿到輸入框後讓他獲取光標跳動
    console.log(el,'1111');
    // 我們可以獲取到我們這個輸入框
    
  }
})

效果圖:
在這裏插入圖片描述

使用自定義指令的好處 就是說我們不需要在每個頁面給輸入框這個事件,我們只需要全局的去註冊 直接在頁面上用 v-"自定義事件名“ 綁定來使用就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章