vue自定义指令的方式

84 阅读1分钟

全局定义

例如要定义一个指令:v-upper-text把字母全转为大写

  • Vue.directive 接收两个参数,第一个参数为指令名字,第二个参数为函数
  • 第二个参数为函数,可接收四个变量,常用的为前两个(el和binding)
  • el:指令所绑定的元素,可以用来直接操作 DOM。
  • binding:一个对象,可获取指令接收到的值
Vue.directive('upper-text', function(el,binding){
    el.innerText = binding.value.toUpperCase()
})

局部定义

  • directives 和 data 同级
directives:{
    'upper-text':function(el,binding){
         el.innerText = binding.value.toUpperCase()
    }
}

简写方式:

directives:{
    'upper-text'(el,binding){
         el.innerText = binding.value.toUpperCase()
    }
}

除了 el 之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的 dataset 来进行。