除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。自定义指令,需要声明钩子函数。注册自定义指令也分为注册全局自定义指令和注册局部自定义指令。两者用法相同,局部指令只能在当前组件里面使用。当全局指令和局部指令同名时以局部指令为准。

1.  自定义指令中的钩子函数

一个指令定义对象可以提供如下几个钩子函数 (均为可选):bind、inserted、update、componentUpdated和unbind。

bind         =>  指令被绑定到元素上时执行,只会执行一次
inserted   =>  被绑定的元素被插入到父节点时执行,只会执行一次
update     =>  当虚拟DOM被重新渲染时执行
componentUpdated   =>  当虚拟DOM重新渲染完成后执行
unbind     =>  指令与元素解绑时调用,只会执行一次

2.  钩子函数中的参数

指令钩子函数会被传入以下参数:el、binding、vnode和oldVnode。

el           =>    被绑定的DOM对象
binding   =>     是一个包含了指令的所有属性的对象,例如:name、rawName、value
vnode     =>     Vue 编译生成的虚拟节点
oldVnode   =>  上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用

3.  动态指令参数

指令的参数可以是动态的。例如,在 v-mydirective:[argument]="value" 中,argument 参数可以根据组件实例数据进行更新!这使得自定义指令可以在应用中被灵活使用。

下面我们通过一个案例来看一下。

<body><div id="app">{{i}} <button @click="i++">+</button><div v-red>Hello</div><!-- 动态指令参数:通过改变value值,可以改变参数从而进行数据更新 --><div v-color="'pink'">测试</div></div><script src="js/vue.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">new Vue({el: '#app',data: {i: 0},directives: {red: { //自定义red指令,需要声明钩子函数bind(){console.log('bind...')},inserted(el){console.log('inserted...', el)// el.style.color = 'red'// console.log(el.style)el.style.color = 'red'},update(){console.log('update....')},componentUpdated(){console.log('componentUpdated...')},unbind(){console.log('unbind...')}},color: {inserted(el,binding){console.log(binding)el.style.color = binding.value}}}})</script></body>

Vue.js中的自定义指令directives相关推荐

  1. Vue项目中的自定义指令

    Vue项目中的自定义指令 使用场景:需要对DOM元素进行底层操作 局部自定义指令 当指令第一次被绑定到元素上的时候,会立即触发 bind() 1 定义 与 data 同级 在 directives 节 ...

  2. Vue.js中的v-model指令(双向绑定)

    Vue.js中v-model的作用 v-model的作用和使用场景 1.v-model的作用--双向绑定 2.v-model双向绑定的使用场景--表单 3.总结 v-model的作用和使用场景 你好! ...

  3. js div加载html_说说 Vue.js 中的 v-cloak 指令

    可以使用 v-cloak 指令设置样式,这些样式会在 Vue 实例编译结束时,从绑定的 HTML 元素上被移除. 当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示 ...

  4. vue.js中的v-model指令的深刻理解

    vue中经常使用到和这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别.vue使用v-model实现这些标签数据的双向绑定,它会根据控件类型自动选取正确的方法来更新元素. ...

  5. 浅析Vue.js 中的条件渲染指令

    1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...

  6. vue 自定义指令 directives

    原文链接: vue 自定义指令 directives 上一篇: vue 事件修饰符 stop,capture,prevent 下一篇: js 坑... vue 可以自己扩充指令 增加一个v-color ...

  7. vue自定义指令directives同时传递多个参数

    vue自定义指令directives同时传递多个参数 // 自定义指令v-hClick绑定for循环第二个参数,这里的inx还可以是其他标的,指令中可通过其做出判断 在dom,将多个参数通过数组的格式 ...

  8. vue中如何自定义指令

    目录 一. 什么是自定义指令 二. 如何自定义指令 三.应用场景实现 输入框防抖 图片懒加载 一键 Copy的功能 拖拽 下拉菜单 相对时间转换 一. 什么是自定义指令 我们看到的v-开头的行内属性, ...

  9. vue中如何自定义指令directive

    一. 什么是自定义指令 我们看到的v-开头的行内属性,都是指令,不同的指令可以完成或实现不同的功能,对普通 DOM元素进行底层操作,这时候就会用到自定义指令.除了核心功能默认内置的指令 (v-mode ...

最新文章

  1. JavaScript学习记录 (三) 函数和对象
  2. 领域驱动设计(DDD)架构演进和DDD的几种典型架构介绍(图文详解)
  3. range.clonecontents 不准确_家长注意!通州今起开展幼升小数据调查,不参加或影响明年入学...
  4. mate7刷android 6.0,华为Mate7 6.0系统刷recovery_Mate7 6.0专用第三方recovery
  5. 程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26
  6. 开学综合症有救了!17篇最新AI论文不容错过
  7. 数据库系统(三)——数据库安全性控制
  8. git idea 本地历史版本回滚_如何为IDEA项目创建GitHub存储库和本地Git存储库
  9. Win10 + Python + MXNet + VS2015配置
  10. Android跳转WIFI界面的四种方式
  11. POJ_1862 Stripies 【贪心】
  12. 操作键盘事件源码解析(常用的鼠标事件、 键盘事件对象之keyCode属性)
  13. 用ping IP的方法测试网卡
  14. 20 个前端练手项目合集
  15. Linux 别名设置,可一键登入服务器- alias
  16. UVa 106 Fermat vs. Pythagoras(毕达哥拉斯定理)
  17. Pandas 实用技能,数据筛选 query 函数详细介绍
  18. Mac电脑双击打不开文件夹
  19. win7 wifi 共享 设置方法
  20. 芯片RK3399性能介绍

热门文章

  1. 远程删除用户手机照片?拼多多回应
  2. docker:IPv4 forwarding is disabled. Networking will not work. 解决方法
  3. OpenGL--多边形偏移
  4. 3款最伟大的联机游戏
  5. java设计模式-观察者模式(广播机制,消息订阅)
  6. Java架构师和java工程师的区别是什么?架构师薪资是多少?
  7. OpenMP: OpenMP嵌套并行
  8. 反汇编入门试手 简单程序
  9. 【20220504】软件开发模式
  10. JAVA abstract