vue自定义指令 vue.directive

257 阅读1分钟

vue自定义指令 vue.directive

directive/index.js

import Vue from "vue"

// 第一个参数:指令名称 (my-directive)
// 第二个参数:钩子函数对象
Vue.directive('my-directive',{
  // el:指令绑定的DOM元素
  // binding:对象参数
  //   name : 指令名,不包括 v- (v-my-directive:add = "1 + 1" ==> my-directive) 
  //   value: 指令的绑定值 (v-my-directive:add = "1 + 1" ==> 2) 
  //   expression : 字符串形式的参数表达式 (v-my-directive:add = "1 + 1" ==> '1 + 1')
  //   oldValue : 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
  //   arg: 传给指令的参数 (v-my-directive:add ==> add ); (v-my-directive:add = '1 + 1' ==> add)
  //   modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
  // vnode: Vue 编译生成的虚拟节点。
  // oldVnode: 上一个虚拟节点
  
  //  共有4个方法属性
  //  bind: 绑定时候执行,只执行一次
  //  unbind: 解除绑定时候调用,只执行一次
  //  inserted: 绑定元素插入时候调用(父节点一定存在,但不一定被插入到文档中)
  //  update: 所在组件更新时候调用
  //  componentUpdated: 所在组件的VNode及其子VNode全部更新后调用
  bind(el,binding){
    el.addEventListener('click',function(){
      console.log('v-my-directive')
    })
  },
})

直接在main.js里面导入以上文件 import './directive' 即可生效