vue學習(十七) 使用自定義指令 使文本框獲得鼠標焦點


需求:當我們進入某個頁面,頁面中的第一個input會自動獲得焦點 光標閃爍,代表可輸入

<div id="app">
  //v-focus 是自定義的
 <input type="text" class="form-control" v-focus/>
</
div> //script <script>
  //自定定義指令 v-focus
  //使用 Vue.directive()定義全局指令
  //其中 參數1 : 指令的名稱,注意,在定義的時候,指令的名稱前面,不需要加 v- 前綴
  //但是 在調用的時候,必須在指令名稱前 加上 v- 前綴來進行調用
  //參數2 :是一個對象,這個對象身上有一些指令相關的函數,這些函數可以在特定的階段,執行相關的操作   
  Vue.directive('focus',{
    bind: function(el){//每當指令綁定到元素上的時候,會立即執行這個bind函數,只執行一次
      //注意 在每個函數中,第一個參數是el,表示被綁定了指令的那個元素,這個el是一個原生的JS對象,所以el有一些js的方法
      //在元素 剛綁定了指令的時候,還沒有插入到DOM中去,這時候調用focus方法沒有作用,因為一個元素只有插入DOM之后才能獲取焦點
      el.focus()//這個方法不合適 雖然不報錯 但是沒效果,需要插入到DOM中
      //和樣式相關的操作,一般都可以在bind中執行
    },
    inserted: function(el){//元素插入到DOM中的時候,會執行inserted函數,觸發一次
      //和JS行為有關的操作,最好在inserted中去執行,防止js行為不生效
      el.focus()
    },
    updated: function(){//當組件或VNode更新的時候會執行updated,可能會觸發多次

    }
  })

  //自定義一個私有的過濾器(局部)   var vm = new Vue({     el:'app',     data:{       msg:''     },     method:{},     filters:{//定義私有過濾器 過濾器有兩個條件 過濾器名稱和處理函數            }   }) </script>

 可以查看官網介紹:https://cn.vuejs.org/v2/guide/custom-directive.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM