定义自定义指令;inserted()、update()

news2025/1/21 4:57:05

自定义指令的意义:对普通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函数这样的写法就不好了。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷爆力扣之有效的山脉数组

刷爆力扣之有效的山脉数组 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&#x…

超级浏览器的Cookies实现跨境电商防关联

大家有没有过这种感觉&#xff0c;打开电脑或手机&#xff0c;一些你喜欢的视频&#xff0c;总能一下子打到心巴上;心心念念想要下单的东西&#xff0c;总是不停出现在屏幕上诱惑你下单。你以为网络才是最懂你的人&#xff0c;其实是大数据正在研究你的一举一动。而聊到大数据&…

Cerebral Cortex:疼痛热刺激引起的脑功能网络分离与整合

目前的研究旨在确定热痛期间大脑网络整合/分离的变化&#xff0c;使用高时间分辨率的网络连接事件优化方法。参与者(n 33)主动判断施加于前臂掌侧的热刺激是否疼痛&#xff0c;然后在每次试验后评价温暖/疼痛强度。我们表明&#xff0c;试验中整合/分离的时间演化与疼痛的主观…

Ubuntu中安装Qt

文章目录Ubuntu中安装必要的软件安装流程配置运行配置运行Ubuntu中安装必要的软件 主要为了打开图形程序 sudo apt-get update sudo apt-get --assume-yes upgrade sudo apt-get install --assume-yes xfce4 xorg-dev libopencc2 libopencc2-data unzip zip主要是一些共享lib…

ECU简介

ECU是电子控制单元的简称&#xff0c;广泛用于汽车系统中&#xff0c;是电控系统的神经中枢。本文将以比较基础的方式展开ECU的工作原理。 一、基本结构 ECU主要由CPU、存储器、IO接口、信息传递总线组成。ECU可以把传感器传入的信号用内存程序和数据启动相应的程序&#xff0c…

人工智能:语音识别技术介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&…

移动Web

her~~llo&#xff0c;我是你们的好朋友Lyle&#xff0c;是名梦想成为计算机大佬的男人&#xff01; 博客是为了记录自我的学习历程&#xff0c;加强记忆方便复习&#xff0c;如有不足之处还望多多包涵&#xff01;非常欢迎大家的批评指正。 目录 一、字体图标 1.1 使用字体图…

Windows使用scp上传文件到linux服务器

我不是管理员&#xff0c;所以上传有点麻烦&#xff0c;需要在windows电脑上操作scp命令&#xff0c; 命令格式&#xff1a;上传文件夹带上-r&#xff0c;上传文件就不用带-r了&#xff0c;而且只能上传到tmp目录下&#xff0c;然后再使用mv命令移动到你想要的目录下&#xff…

宝塔上的wordpress站点更换域名+配置SSL+改版百度收录

前言 好久没写文章了&#xff0c;甚是想念&#xff0c;近半年来发生了很多事情&#xff0c;心态也变了很多。 这个博客自创办以来&#xff0c;原域名叫“is-hash.com”&#xff0c;是我2019年的突发奇想注册此域名&#xff0c;“is-hash”即为“是#”&#xff08;hash是#的英…

力扣第73题

一、题目&#xff1a;73. 矩阵置零 二、题目解析&#xff1a; 解题步骤&#xff1a;注意题目要求原地算法–>利用矩阵的第一行和第一列记录矩阵需要置0的行和列&#xff0c;只要把0所在行和列的第一个位置置为0&#xff0c; 然后再根据第一行和第一列0的位置&#xff0c;对…

设备树覆盖:实现 DTO

前面我们学习了dts&#xff0c;也知道这个dtc、dtb。这个dto是什么&#xff1f; 实现 DTO 包括分割设备树、构建、分区和运行。 在实现可以正常工作之后&#xff0c;您还必须保持两个 DT 之间的兼容性&#xff0c;并确定用于确保每个 DT 分区安全性的策略。 1、分割 DT 首先…

Linux-用户概念和用户管理命令,用户组概念和用户组管理命令。

一&#xff0c;用户概念和用户管理命令&#xff1a; 1&#xff0c;linux是一个多用户操作系统&#xff0c;多个用户可以在同一时间内登录同一系统。 用户可理解为获取系统资源权限的集合&#xff0c;每个用户都会分配一个uid。分为三种&#xff1a; 超级用户&#xff1a;uid为…

String的方法介绍以及实现

今天需要掌握的有如下方法&#xff0c;有点多&#xff0c;但是不难&#xff0c;加油吧 1.字符串的查找 2.字符串的转化 3.字符串的截取 4.字符串的替换 5.字符串的拆分 6.字符串的其他方法 1.字符串的查找 public class TestDemo {public static void main(String[] ar…

java进阶—集合

前面我们知道了一个能存东西的数据结构&#xff0c;数组 java 基础——数组&#xff0c;现在我们来看一个高级一点的东西&#xff0c;集合 这里先提一点&#xff0c;集合的底层其实是数组 集合&#xff08;collection&#xff09;是什么呢&#xff1f; 我们可以把集合想象成…

接口测试需求分析

测试接口的时候&#xff0c;可能很多人都会想&#xff0c;按着研发给的接口协议文档来测&#xff0c;不就好了吗&#xff1f; 其实&#xff0c;对于接口的测试&#xff0c;还需要有点深度的需求分析&#xff0c;然后再进行对应的测试。对于接口测试&#xff0c;这里有个不太详…

python 高级技巧

闭包 定义双层嵌套函数&#xff0c;内层函数可以访问外层函数的变量 将内层函数作为外层函数的返回&#xff0c;此层函数就是闭包函数 在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部函数&#xff0c;我们把这个使用外部函数变…

12小时,教室与生产线接力 复旦MBA科创青干营首个整合实践活动日

针对有志于投身科创事业的复旦MBA学生&#xff0c;复旦管院特别开设“复旦MBA科创青干营”&#xff0c;将科创管理教育与MBA培养体系深度融合。在MBA核心课基础上&#xff0c;学院为学生定制了原创、系统和注重实战的科创课程&#xff0c;并通过科创企业参访、科创先锋论坛、科…

初学者如何打开ABAQUS力学有限元仿真的大门

作者 | 静安 仿真秀专栏作者 导读&#xff1a;明年6月&#xff0c;笔者即将研究生毕业&#xff0c;从最初摸爬滚打一个人自学有限元力学仿真&#xff0c;到现在已经有三年多了。我研究方向是静力学仿真&#xff08;Abaqus&#xff09;和基于python的Abaqus二次开发。时至今日&…

MySQL命令行插入数据乱码分析

MySQL命令行插入数据乱码分析 1.起因 在开发过程中&#xff0c; 在linux 的上MySQL 的客户端提交插入数据的SQL, 然后数据在页面展示的时候乱码&#xff0c;在网上查找了一些资料&#xff0c;说是MySQL 的客户端连接设置是Latin1导致的&#xff1b;(当然肯定还是有是由其他的…

【iOS开发-AFNetWorking下的POST和GET】

文章目录写在开头GET 和POSTGET 和POST的区别联系AFNetWorking使用方法DEMOGET请求数据GET方法GET请求到的数据解析POST请求POST的请求测试1POST请求测试二请求的数据拼接POST- DEMO2POST方法2参数理解POST方法2的注意头像对于DATA的转换在Block里进行拼接方法MIME Type的简单认…