vue 自定义指令使用~

303 阅读1分钟

基本概念

  • 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。在Vue里,代码复用的主要形式和抽象是组件。然而,有的情况下,仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。

全局指令

// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
  // 当绑定元素插入到 DOM 中。
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})
//使用
<input v-focus />

局部指令

export default {
    directives:{
        focus:{
          inserted: function (el) {
            el.focus()
          }      
        }
    }
}
//使用
<input v-focus />

钩子函数

【bind】

  只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作

【inserted】

  被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)

【update】

  所在组件的 VNode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。指令的值可能发生了改变也可能没有。但是可以通过比较更新前后的值来忽略不必要的模板更新

【componentUpdated】

  所在组件的 VNode 及其孩子的 VNode 全部更新时调用

【unbind】

  只调用一次, 指令与元素解绑时调用