web前端vue:自定義指令directive

weixin_33890499發表於2018-01-17
9793778-7547712c90f9f093.png
官網截圖例項

vue除了一些核心的內部定義的指令(v-model,v-if,v-for,v-show)外,vue也允許使用者註冊自己的一些功能性的指令,有時候你實在是要對Dom操作,這個時候是自定義指令最合適的了。
來直接看例子:當頁面載入時使得元素獲得焦點(autofocus 在移動版 Safari 是不支援的),就是當頁面載入好了,不做任何的操作使得表單自動獲得焦點,游標自動在某個表單上程式碼如下:

Vue.directive('zsqfocus', {  // 註冊一個全域性自定義指令 `v-zsqfocus`,在main.js檔案裡
  inserted: function (el) {   // 當被繫結的元素插入到 DOM 中時自動呼叫
    el.focus()   // 聚焦元素
  }
})

如果想註冊區域性指令,元件中也接受一個 directives 的選項:

<script>
export default {
    directives: {   // 指令的定義
        zsqfocus: {
            inserted: function (el) {  // 獲得焦點
              el.focus()
            }
        }
      }
    }
</script>

然後你可以在模板中任何元件上使用新的 v-zsqfocus 屬性,如下:

<template>
  <input v-zsqfocus /> //呼叫   
</template>

舉了一個跟官網一樣的例子,directives跟methods,mounted等是一個級別的可以同時使用。有不懂的朋友或喜歡vue的同學可以加我微信(nihaomeili87)我們一起進步!等你噢~

相關文章