欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue自定义指令directive实例详解

程序员文章站 2022-06-24 17:21:42
下面给大家介绍vue自定义指令directive,具体内容如下所示:   官网截图实例 vue除了一些核心的内部定义的指令(v-model,v-if,v-f...

下面给大家介绍vue自定义指令directive,具体内容如下所示:

vue自定义指令directive实例详解 

官网截图实例

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等是一个级别的可以同时使用。

ps:下面看下vue之自定义指令directive的实例代码,具体代码如下所示:

<template>
 <div>
  <input v-model="dir1" v-my-directive1="dir1"/>     <input v-model="dir2" v-my-directive2="dir2"/>
 </div>
</template>
<script>
 export default {
  data(){
   return {         dir1:'',         dir2:''
       }
  },
  directives:{       //直接绑定函数,作用等同于update,不做准备工作和扫尾工作
   mydirective1(val){
    console.log(val)
   },       mydirective2:{          bind(){             //第一次绑定到元素的准备工作          },          update(val,old){            //在绑定到元素后立即以初始值第一次调用,然后每次example2变化都会调用update            console.log(val)          },            unbind(){            //销毁前的清理工作          }       }
  }
 }
</script>

总结

以上所述是小编给大家介绍的vue自定义指令directive实例详解,希望对大家有所帮助