需求:當我們進入某個頁面,頁面中的第一個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
