vue自定义指令

76 阅读1分钟

v- 开头的行内属性,都是指令,不同的指令可以完成或实现不同的功能

除了核心功能默认内置的指令 (v-modelv-show),Vue 也允许注册自定义指令

指令使用的几种方式:

//会实例化一个指令,但这个指令没有参数 
2`v-xxx`
3
4// -- 将值传到指令中
5`v-xxx="value"`  
6
7// -- 将字符串传入到指令中,如`v-html="'<p>内容</p>'"`
8`v-xxx="'string'"` 
9
10// -- 传参数(`arg`),如`v-bind:class="className"`
11`v-xxx:arg="value"` 
12
13// -- 使用修饰符(`modifier`)
14`v-xxx:arg.modifier="value"` 

怎样注册:

  • 全局注册注册主要是用过Vue.directive方法进行注册

Vue.directive第一个参数是指令的名字(不需要写上v-前缀),第二个参数可以是对象数据,也可以是一个指令函数

// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()  // 页面加载完成之后自动让输入框获取到焦点的小功能
  }
})
  • 局部注册通过在组件options选项中设置directive属性

    directives: { focus: { // 指令的定义 inserted: function (el) { el.focus() // 页面加载完成之后自动让输入框获取到焦点的小功能 } } }

然后就可以v-focus使用了