Vue 2 自定义指令

news2024/10/6 16:18:50

Vue 2自定义指令

Vue自定义指令允许我们在DOM元素上添加自己想要的行为来扩展Vue的功能。

一个自定义指令需要一个名称和一个定义对象。在定义对象中,你可以使用一些钩子函数来控制指令的行为:

  1. bind:在指令被绑定到元素上时使用,只调用一次。可以用来初始化一些值。
  2. inserted:在被绑定元素插入父节点时调用。可以用来执行初始的DOM操作,比如设置焦点/绑定事件。
  3. update:在被绑定元素的值更新时调用,无论绑定值是否改变。可以用来响应值的更新。可能发生在其子VNode更新之前。
  4. componentUpdated:指令所在组件的VNode及其子VNode全部更新后调用。
  5. unbind:指令与元素解绑时调用,清除绑定的一些事件监听器。

下面给出一个简单的示例:

<!DOCTYPE html>
<html>

<head>
    <title>Vue Custom Directive Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <input v-model="colorValue" v-change-color  style="width: 50px;"  />
    </div>
    <script>
        Vue.directive('change-color', {
            inserted: function (el) {
                el.addEventListener('input', function () {
                    el.style.color = el.value
                })
            }
        })
        var vm = new Vue({
            el: '#app',
            data: {
                colorValue: 'black'
            }
        });
    </script>
</body>

</html>

在这里插入图片描述


Vue自定义指令的钩子函数接受一些参数,这些参数提供了有关指令的上下文信息及对应的DOM元素:

  1. bind(el,binding,vnode):
    • el:绑定指令的元素。
    • binding:一个对象,包含以下属性:
      • name:指令名称,不包括v-前缀。
      • value:指令的绑定值,可以是一个表达式或变量。
      • oldValue:指令之前的绑定值。
      • expression:绑定值的表达式字符串形式。
      • arg:指令参数,例如v-my-directive:arg中的arg。
      • modifiers:修饰符对象,例如v-my-directive.modifier1.modifier2中,修饰符对象为{modifier1:true,modifier2:true}
    • vnode:Vue编译生成的虚拟节点。
  2. inserted(el,binding,vnode)
  3. update(el,binding,vnode,oldVnode):
    • oldVnode:之前的虚拟节点,用于比较更新。
  4. componentUpdated(el,binding,vnode,oldVnode)
  5. unbind(el,binding,vnode)

我们也可以使用v-my-directive:[arg]="value"的形式来使用动态参数。

<!DOCTYPE html>
<html>

<head>
    <title>Vue Custom Directive with Dynamic Argument</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <p v-mydirective:[arg1]>Hello World</p>
    </div>
    <script>
        Vue.directive('mydirective', {
            bind: function(el, binding, vnode) {
                console.log(binding.arg);
                el.style[binding.arg] = '5px solid red';
            }
        });
        var vm = new Vue({
            el: '#app',
            data: {
                arg1: 'border'
            }
        });
    </script>
</body>

</html>

在这里插入图片描述


bind和update的函数简写

同时定义bind和update而不考虑其他钩子函数:

Vue.directive('mydirective',function(el,binding){
    //...
})

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

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

相关文章

基于IMX6ULLmini的linux裸机开发系列七:中断处理流程

中断上下文 cpu通过内核寄存器来运行指令并进行数据的读写处理的&#xff0c;它在进入中断前一个时刻的具体值&#xff0c;称为中断上下文 中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时&#xff0c;它会保存当前正在执行的指令的状…

广州华锐互动:3D数字孪生开发编辑器助力企业高效开发数字孪生应用

3D数字孪生开发编辑器是一种新兴的技术&#xff0c;它可以帮助企业更好地管理和维护其物联网设备。这些工具可以帮助企业实现对设备的实时监控、故障排除和优化&#xff0c;从而提高生产效率和降低成本。 数字孪生系统是一种将物理世界与数字世界相结合的技术&#xff0c;它可以…

Python web实战之细说 Django 的单元测试

关键词&#xff1a; Python Web 开发、Django、单元测试、测试驱动开发、TDD、测试框架、持续集成、自动化测试 大家好&#xff0c;今天&#xff0c;我将带领大家进入 Python Web 开发的新世界&#xff0c;深入探讨 Django 的单元测试。通过本文的实战案例和详细讲解&#xff…

【C#学习笔记】C#特性的继承,封装,多态

文章目录 封装访问修饰符静态类和静态方法静态构造函数 继承继承原则sealed修饰符里氏替换原则继承中的构造函数 多态接口接口的实例化 抽象类和抽象方法抽象类和接口的异同 虚方法同名方法new覆盖的父类方法继承的同名方法 运行时的多态性编译时的多态性 照理继承封装多态应该…

Chapter 14: Using Web Services | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Python and Web ServicesUsing Web ServiceseXtensible Markup Language - XMLParsing XMLJavaScript Object Notation - JSONParsing JSONApplication Programming InterfacesSecurity and API usageGlossary Python for Everybody Expl…

all in one之安装docker、青龙和青龙卸载更新(第三章)

安装docker和青龙 ubuntu安装docker 参考教程0 参考教程1 参考教程2 apt-get install docker-ce docker-ce-cli containerd.io更改docker国内源 一、国内加速地址 Docker中国区官方镜像 https://registry.docker-cn.com网易 http://hub-mirror.c.163.comustc https://d…

Monitor.Analog采集软件详细设计说明

Monitor.Analog模拟量采集软件概要设计&#xff1a; 1. 引言&#xff1a; 模拟量采集软件的目标是实现对模拟量信号的采集、处理和展示。该软件旨在提供一个用户友好的界面&#xff0c;允许用户配置采集参数、实时监测模拟量信号&#xff0c;并提供数据分析和导出功能。 2. 功能…

多功能数据采集主机——数据集中采集

无论是机房监控系统还是仓库监控系统&#xff0c;又或者是其他大型场所的监控系统都会用的一个设备——多功能数据采集主机。 在环境监控系统中会用到温湿度、水浸、烟感等多种传感器&#xff0c;时时监测周围环境&#xff0c;这些传感器都可以通过多功能数据采集主机&#xff…

学习笔记230816---vue项目中使用第三方组件{el-dropdown}如何设置禁止事件功能

问题描述 使用第三方组件elementui&#xff0c;在导航菜单el-menu的el-menu-item中嵌入一个下拉菜框el-dropdown。点击...icon弹出下拉菜单el-dropdown-menu&#xff0c;那么这时会触发事件冒泡&#xff0c;el-menu-item菜单项的点击事件也会触发。 解决方法 阻止事件冒泡&am…

学习笔记230804---逻辑跳转this.$router.push在写法上的优化

今天和资深前端代码写重&#xff0c;同时写页面带参跳转&#xff0c;组长觉得他写的方式比我高端一点&#xff0c;我觉得确实是&#xff0c;像资深大佬学习。 我的写法&#xff1a; this.$router.push(/bdesign?applicationId${this.data.id}&appName${this.data.name})…

【单片机毕业设计4-基于stm32c8t6的红外测温系统】

【单片机毕业设计4-基于stm32c8t6的红外测温系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇4基于stm32的红外测温系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 -------------------…

mysql主从复制最简单环境搭建(一主一从)

提示&#xff1a;前面有相应的文章利用不同方式进行的主从配置 文章目录 前言一、概述二、主从复制的优点三、原理四、搭建五、主库配置六、从库配置七、测试 前言 一、概述 主从复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上…

Mac 使用 rar 命令行工具解压和压缩文件

在 Mac 中常遇到的压缩文件有 zip 和 rar 格式的&#xff0c;如果是 zip 格式的 Mac 系统默认双击一下文件就能直接解压了&#xff0c;但 rar 文件就不行。 需要额外下载 rar 工具了实现。 第一步&#xff1a;下载 rar 工具 工具网址&#xff1a;https://www.rarlab.com/dow…

【C++】stack/queue/优先级队列的模拟实现

目录 1. stack/queue1.1 模拟实现 2. 优先级队列2.1 模拟实现2.2 仿函数 1. stack/queue stack文档说明 queue文档说明 stack和queue被称为容器适配器。 容器适配器是什么&#xff1f; 它是一种特殊的容器类型&#xff0c;通过封装已有的容器类型来提供特定功能的接口函数&a…

探索1688 API的无限商机与应用

为了更好地满足用户需求&#xff0c;1688.com开放了丰富强大的API接口&#xff0c;使得开发者可以便捷地与平台进行集成&#xff0c;实现自动化的商务操作。 产品查询与筛选&#xff1a;通过调用1688 API&#xff0c;你可以根据自定义条件进行商品查询和筛选&#xff0c;获取符…

JAVA三种拦截方式

最近面试有遇到拦截方式的场景&#xff0c;结合网上xdm的代码整理了下&#xff0c;分为以下三种&#xff1a; java原生过滤器Filter、springMVC拦截器、aop切面 目录&#xff1a; 一、java原生过滤器Filter二、springMVC拦截器三、aop切面 一、java原生过滤器Filter package c…

C++初阶语法——new,delete开辟/销毁动态内存空间

前言&#xff1a;在C语言中&#xff0c;有malloc&#xff0c;realloc&#xff0c;calloc开辟动态内存空间&#xff0c;free销毁动态内存空间。而在C中&#xff0c;使用new开辟动态内存空间&#xff0c;delete销毁动态内存空间。不仅简化了操作&#xff0c;更为重要的是&#xf…

springcloud3 hystrix实现服务监控显示3(了解)

一 hystrix的服务监控调用 1.1 hystrix的服务监控调用 hystrix提供了准实时的监控调用&#xff08;hystrix dashbord&#xff09;&#xff0c;Hystrix 会持续的记录所有通过hystrix发送的请求的执行信息&#xff0c;并以统计报表和图形的形式展示给用户&#xff0c;包括每秒执…

在海外如何进行应用商店的关键词优化

分析市场&#xff0c;了解我们的应用类别&#xff0c;将我们的应用与竞争对手的优点和缺点进行比较&#xff0c;找到市场上的空白或所谓未满足的需求&#xff0c;并思考如何填补。 1、应用商店关键词优化。 关键词优化的目的是找到最相关的关键词 &#xff0c;并测试应用元数据…

菜鸟Vue教程 - 实现带国际化的注册登陆页面

初接触vue的时候觉得vue好难&#xff0c;因为项目中要用到&#xff0c;就硬着头皮上&#xff0c;慢慢的发现也不难&#xff0c;无外乎画个布局&#xff0c;然后通过样式调整界面。在通过属性和方法跟js交互。js就和我们写的java代码差不多了&#xff0c;复杂一点的就是引用这种…