前面已经介绍了几个系统提供的指令,比如 “v-text”、“v-bind”、“v-on” 等等,本文我们来介绍下自定义指令的实现。

自定义全局指令

我们想创建一个自动获取焦点的指令,该功能其实可以通过 document.getElementById('search').focus() 来实现,但此处我们专门来介绍下自定义指令的实现方式。

效果实现

  • 定义全局指令:v-focus
Vue.directive("focus",{bind:function(el){},inserted:function(el){el.focus()},updated:function(el){}
})
  • 使用v-focus指令
<div id="app">姓名:<input type="text" v-focus><br>密码:<input type="password">
</div>
  • 实现效果


我们可以看到刷新后搜索框获取到了焦点,说明我们创建的 v-focus 指令生效了。现在我们来具体解释一下。

指令名称

Vue中所有的指令,在调用的时候,都以 v- 开头,但是在定义的时候我们不用添加v-前缀。

参数方法

定义 v-focus 指令时,第二个参数是一个对象,这个对象身上有一些指令相关的函数,这些函数可以在特定的阶段执行相关的操作。

钩子方法 说明
bind 当指令绑定到元素上时,会立即执行bind 函数,只执行一次
inserted 元素插入到DOM中时,会执行 inserted 函数,触发1次
updated 当VNode更新时,会执行 updated, 可能会触发多次

方法的参数值

第一个参数,永远是el ,表示被绑定了指令的那个元素,这个el参数,是一个原生的JS对象。
第二个参数,binding:一个对象,包含以下属性:

参数 说明
name 指令名,不包括 v- 前缀。
value 指令的绑定值
oldValue 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
expression 字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
arg 传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
modifiers 一个包含修饰符的对象。例如 v-my-directive.foo.bar 中,修饰符对象为 { foo:true, bar:true }。

方法的使用场景

  • 和样式相关的操作,一般都可以在 bind 执行。
  • 和JS行为有关的操作,最好在 inserted 中去执行。

案例: 定义一个设置颜色属性的指令:v-color。

Vue.directive("color",{bind:function(el,binding){el.style.color=binding.value},
})
<div id="app">姓名:<input type="text" v-focus v-color="'red'"><br>密码:<input type="password">
</div>

自定义私有指令

和过滤器一样,全局指令所有的vm对象都可以共享,我们也可以为每个vm对象创建私有的指令,方法如下。

<div id="app">姓名:<input type="text" v-border="'red'"><br>密码:<input type="password">
</div>
<script>var vm = new Vue({el: "#app",data: { },directives:{'border':{bind:function(el,binding){el.style.borderColor=binding.value}}}})
</script>

函数简写

很多时候,我们需要在 bind 和 update 时触发相同行为,而不关心其它的钩子。可以直接使用函数简写,等同于把代码写到 bind 和 update 方法中。

var vm = new Vue({el: "#app",data: { },directives:{'border':function(el,binding){el.style.borderColor=binding.value}}
})

【Vue】自定义指令(全局定义 局部定义)相关推荐

  1. clientsideevents能定义几个click事件_分享8个非常实用的Vue自定义指令

    作者:lzg9527 https://juejin.cn/post/6906028995133833230 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也 ...

  2. vue 自定义指令 directive 全局 directives 局部 inserted update

    vue 自定义指令 需求 效果 全局 - 自定义指令 代码 局部 - 自定义指令 代码 自定义命令传值 效果 代码 问点 需求 获取标签,扩展额外的功能 效果 全局 - 自定义指令 代码 // mai ...

  3. Vue自定义指令原来这么简单

    本篇学习目标 能够了解组件进阶知识 能够掌握自定义指令创建和使用 能够完成tabbar案例的开发 1. 组件进阶 1.0 组件进阶 - 动态组件 目标: 多个组件使用同一个挂载点,并动态切换,这就是动 ...

  4. 9、Vue自定义指令

    Vue自定义指令 1.vue指令和自定义指令 2.使用自定义指令 2.1.全局注册 2.2.局部注册 3.钩子函数 1.vue指令和自定义指令 什么是指令? v-model.v-bind.v-on.v ...

  5. vue自定义指令基础

    今天,我们讲讲vue自定义指令基础知识,主要包括指令如何创建,如何注册,以及指令的相关属性钩子函数. 指令的注册 我们通过以下方法注册一个全局自定义指令 Vue.directive(name,defi ...

  6. [Vue]自定义指令

    前言 系列文章目录: [Vue]目录 老师的课件笔记,不含视频 https://www.aliyundrive.com/s/B8sDe5u56BU 笔记在线版: https://note.youdao ...

  7. vue自定义指令---处理加载图片失败时出现的碎图,onerror事件

    目录 一.自定义指令 1.局部注册和使用 2.全局注册和使用 二.自定义指令处理图片加载失败(碎图) 一.自定义指令 vue中除v-model.v-show等内置指令之外,还允许注册自定义指令,获取D ...

  8. Vue的自定义指令以及Vue自定义指令的应用场景

    前言 一.Vue的自定义指令分为? vue中除了核心功能内置的指令外,也允许注册自定义指令.有的情况下,对普通DOM元素进行底层操作,这时候就会用到自定义指令. 自定义指令分为全局自定义指令和局部的自 ...

  9. vue自定义指令使用

    前言 一.Vue的自定义指令分为? vue中除了核心功能内置的指令外,也允许注册自定义指令.有的情况下,对普通DOM元素进行底层操作,这时候就会用到自定义指令. 自定义指令分为全局自定义指令和局部的自 ...

  10. vue自定义指令(详解)

    vue自定义指令,核心就是需要自己亲手去操作DOM 而vue中的内置指令例如v-model只不过是vue帮你动了dom上的display属性, 所以自定义指令,就是自己亲手对原生操作dom进行了一次封 ...

最新文章

  1. 干货|了解机器学习常用数据预处理
  2. linux shell 脚本 查找文件,Linux Shell在目录下使用for循环结合if查找文件的巧用
  3. python类和对象详解_Python公开课 - 详解面向对象
  4. prometheus监控耗时MySQL_Grafana+Prometheus监控mysql性能
  5. Android之面试题精选,自己收藏下
  6. 第九大陆服务器未找到文件,第九大陆服务器优化规则说明 拍卖行和寄售功能关闭公告...
  7. 推动边缘计算的七项核心技术
  8. Mac下的命令行自动补全功能
  9. 【监听文件 多线程】使用java--WatchService监听文件 开启多线程copy文件
  10. Mybatis(持久层的框架),注入的三种方式
  11. springBoot 注入@Slf4j,框架中的方法无法调用。。。
  12. iframe下session cookies失效
  13. 阈值分割法——最佳阈值的选择问题
  14. 推荐系统实践 - 02利用用户行为数据
  15. box-sizing失效的原因
  16. luoguP3403 跳楼机
  17. 快递柜项目,面向对象
  18. 终于把Edison板子上线了
  19. 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
  20. UE4 渲染半透明物体进深度剔除(复制物体)

热门文章

  1. java socket 异步回调函数,分享nodejs异步编程基础之回调函数用法
  2. java控制台输出五行字符串_java五行代码导出Excel
  3. Win7下的内置FTP组件的设置详解
  4. python pip安装第三方库老是报错_#python pip 安装dlib一直失败?#python安装dlib错误...
  5. Java-keepalived
  6. 总奖金高达180万元 蚂蚁金服启动区块链创新大赛
  7. 洛谷 P1404 平均数
  8. 第八章 数据结构与算法
  9. MAC 下使用ipv6、ipv4观看电视、网络电视
  10. hdu 3062 Party(2-sat,3级)