自定义指令的意义:对普通DOM元素进行底层操作;

作用 :可以获取到底层的dom,拿到想要的节点,从而进行操作;

实际应用:可以通过指令知道什么时候dom创建完成,从而进行依赖dom的库的初始化工作;

<body><div id="box"><div v-hello>11111</div></div><script>Vue.directive("hello",{//指令的生命周期函数inserted(el){console.log("inserted",el)}})new Vue({el: "#box",data: {}})</script></body>

结果:

代码中:div标签里的 hello 是自定义的指令,在dom中用的时候就是:v-指令;

定义hello指令,通过Vue.directive(“指令名”,{}),和定义组件形式一样;


inserted()生命周期函数:

inserted()生命周期函数:

触发时间:节点第一次插入到父节点(页面)中会触发,只会触发这一次;

用法:inserted(接收dom节点的形参,接收指令参数的形参)


如何拿到底层dom节点呢:

  • 通过指令的生命周期函数:inserted(),这个函数的作用是只要当前节点插到页面上,这个函数就会自动执行,就会获取到该节点;
  • 注意:inserted是指令的生命周期函数跟组件的生命周期函数没关系,不一样,是相互独立的;

inserted函数的参数el:

  • 这个参数就是当前节点,当前节点看你把指令用在谁身上喽。代码中hello指令在子div身上,所以拿到的就是"<div>11111</div>"这个节点;

指令里面也可以传参数:

  • 传参数的写法:要加上引号:
<div v-hello=" 'yellow' ">11111</div>//yellow是参数
  • 不加引号的,直接写在里面的,传的是状态,不是参数:
<div v-hello="yellow">11111</div>//yellow是状态

inserted接收参数: binding

<div id="box"><div v-hello=" 'yellow' ">11111</div>
</div>
Vue.directive("hello",{//指令的生命周期函数inserted(el,binding){console.log("inserted",binding)el.style.background = binding.value}})
  • inserted第二个参数binding是接收“yellow”参数的,结果是对象:
  • 结果:

  • 对象里面的value值放的就是yellow属性,再把这个属性赋值给标签做样式,就很有用:
el.style.background = binding.value


update():更新时期的生命周期函数

  • 如果想更改这个参数,也就是 指令接收的参数:v-hello=" 'yellow' ,会发现不好用,改不了,因为inserted生命周期函数只在节点插入父节点的时候,会自动执行一次,后面就不会再执行了;
  • 如果想更改参数,可以用指令的生命周期函数update():

update():更新时期的生命周期函数

触发事件:当指令的参数或者状态有所更新就会触发

用法:update(接收dom节点的形参,接收指令参数的形参)

update(el,binding){console.log("update",binding)el.style.background = binding.value}

完整代码:

<body><div id="box"><div v-hello=" whichcolor ">11111</div></div><script>Vue.directive("hello",{//指令的生命周期函数inserted(el,binding){console.log("inserted",binding)el.style.background = binding.value},update(el,binding){console.log("update",binding)el.style.background = binding.value}})new Vue({el: "#box",data: {whichcolor:'blue'}})</script></body>

结果:

以上两个生命周期函数有简写方式:

Vue.directive("hello",()=>{//每次插入或者更新dom就会操作一次el.style.background = binding.value}),

就是把两个生命周期函数放在一起写;

当然这种简写方式只有不强调单独一个生命周期函数时,可以使用;让只想用单独的inserted函数这样的写法就不好了。

定义自定义指令;inserted()、update()相关推荐

  1. vue之vue的生命周期、swiper、自定义组件的封装、自定义指令、过滤器、单文件组件及vue-cli

    文章目录 1.vue的生命周期 1.1.8个生命周期函数 2.swiper 3.自定义组件的封装 4.自定义指令 4.1.定义 4.2.基本使用 4.3.利用自定义指令传入指定参数修改背景色 5.过滤 ...

  2. [Vue]自定义指令

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

  3. Vue3 学习笔记 —— 破坏式更新、自定义指令 directive

    目录 1. 什么叫破坏式更新? 2. Vue3 中的自定义指令 2.1 自定义指令的生命周期 2.1.1 Vue2 Vs Vue3 的自定义指令生命周期 2.1.2 自定义指令的生命周期中,接收的参数 ...

  4. Vue基础学习笔记Day06_动态组件_插槽_自定义指令

    今日目标: 能够了解组件进阶知识 能够掌握自定义指令创建和使用 学习内容: 学习目录: 组件进阶 自定义指令 今日总结 面试题 知识点自测 组件创建, 注册和使用 - 伸手就来特别熟练 指令的作用 1 ...

  5. 【Vue知识点- No6.】动态组件、插槽、自定义指令、tabbar案例

    动态组件.插槽.自定义指令 学习目标 1.能够了解组件进阶知识. 2.能够掌握自定义指令的创建和使用. 3.能够完成tabbar案例的开发. 1.组件进阶 1.0 动态组件 问题:如何切换2个组件,互 ...

  6. Vue自定义指令——v-focus

    前言 本文直接参考vue2.0官方文档, 并演示博主项目中的使用 自定义指令 directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意, ...

  7. Vue API(directives) 自定义指令

    前言:除了vue的内置指令以外,我们可以定义自定义指令.内置指令表相见:https://www.cnblogs.com/ilovexiaoming/p/6840383.html 我们定义一个最简单的 ...

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

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

  9. vue自定义指令update 和 componentUpdated及bind 和 inserted区别

    1. 适用 需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令 2. 钩子函数参数 除了 el 之外,其它参数都应该是只读的,切勿进行修改 <div v-if="show& ...

最新文章

  1. java boolean io流_java基础入门-day22-IO流
  2. using的几种用法 C#
  3. 30岁二刷博士,17个月发6篇一作获顶会最佳!现实版人生重开模拟器
  4. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
  5. python的span方法_Python Span.set_extension方法代码示例
  6. asp.net core webapi Session 内存缓存
  7. 如何查看sql2005数据库的端口号
  8. 如何在钉钉上开发自己的应用_快速上手——钉钉H5微应用开发接入
  9. 为什么git的“ pull request”不称为“ push request”?
  10. C/C++集成开发环境搭建
  11. 多因素cox回归结果解释 第二十八讲 R语言-Cox比例风险模型1 - 知乎 (zhihu.com)
  12. Kaggle账号的注册
  13. 互联网商业模式O2O、C2C、B2B、B2C等介绍
  14. 聚观早报|饿了么星选停止运营;百度2022财报全年营收1236.75亿元
  15. STM32——浅谈睡眠模式、停机模式、待机模式
  16. 李宏毅2021/2022春机器学习课程(机器学习基本概念简介)
  17. python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...
  18. 什么是三层交换机?二层交换与三层交换和路由有什么区别?
  19. Hack the box靶机 Grandpa
  20. C#实现共享并且建立账号(指定账号登录操作,如果是 1219错误则清除用户数据)

热门文章

  1. 全志H3 linux系统recovery制作过程
  2. 2022磺化工艺考试模拟100题及答案
  3. 凌吾修复代挂网全新界面源码
  4. aida64注册信息已损坏_AIDA64 Extreme(硬件检测)
  5. 服务器应用程序不可用 .net aspx 配置问题
  6. 如何安全的保存密码?
  7. sybase基础知识(新手必看)
  8. 用计算机唱歌弹奏china,如何用电脑进行吉它弹唱录音!
  9. 音乐宿主软件排行榜前十名,音乐宿主要买正版吗
  10. 谷歌chrome浏览器不能启动完美解决