当前位置: 首页 > news >正文

自定义指令基础

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)
选项式API_自定义指令

<template><h3>自定义指令</h3><p v-author>文本信息</p>
</template>
<script>
export default {directives:{author:{mounted(element){element.innerHTML = element.innerHTML + "-itbaizhan"}}}
}
</script>

组合式API_自定义指令

<template><h3>自定义指令</h3><p v-author>文本信息</p>
</template>
<script setup>
const vAuthor = {mounted:(element) =>{element.innerHTML = element.innerHTML + "-itbaizhan"}
}
</script>

全局与局部自定义指令

自定义指令是区分全局和局部注册,在全局注册,可以在任意组件中使用,局部注册,只在当前组件中使用

局部自定义指令

<template><h3>自定义指令</h3><p v-blue>蓝色效果</p>
</template>
<script>
export default {directives:{blue:{mounted(element){element.style.color = "blue"}}}
}
</script>

全局自定义指令

import { createApp } from 'vue'
import App from './App.vue'const app = createApp(App)app.directive("red",{mounted(element){element.style.color = 'red'}
})app.mount('#app')

自定义指令钩子函数

自定义指令有很多钩子函数,我们可以理解为是自定义指令的生命周期函数,在不同的情况下会自动调用
钩子函数

<template><h3>自定义指令</h3><p v-red v-if="flag">{{ message }}</p><button @click="updateHandler">修改数据</button><button @click="delHandler">删除元素</button>
</template>
<script setup>
import { ref } from "vue"
const message = ref("红色效果")
const flag = ref(true)
function updateHandler(){message.value = "修改的红色效果"
}
function delHandler(){flag.value = false
}
const vRed = {// 在绑定元素的 attribute 前// 或事件监听器应用前调用created(el, binding, vnode, prevVnode) {console.log("created");},// 在元素被插入到 DOM 前调用beforeMount(el, binding, vnode, prevVnode) {console.log("beforeMount");},// 在绑定元素的父组件// 及他自己的所有子节点都挂载完成后调用mounted(el, binding, vnode, prevVnode) {console.log("mounted");},// 绑定元素的父组件更新前调用beforeUpdate(el, binding, vnode, prevVnode) {console.log("beforeUpdate");},// 在绑定元素的父组件// 及他自己的所有子节点都更新后调用updated(el, binding, vnode, prevVnode) {console.log("updated");},// 绑定元素的父组件卸载前调用beforeUnmount(el, binding, vnode, prevVnode) {console.log("beforeUnmount");},// 绑定元素的父组件卸载后调用unmounted(el, binding, vnode, prevVnode) {console.log("unmounted");}
}
</script>

自定义指令钩子函数参数

指令的钩子会传递以下几种参数

el:指令绑定到的元素。这可以用于直接操作 DOM。

binding:一个对象,包含以下属性。

value:传递给指令的值。例如在 v-my-directive=“1 + 1” 中,值是 2。
oldValue:之前的值,仅在 beforeUpdate 和 updated 中可用。无论值是否更改,它都可用。
arg:传递给指令的参数 (如果有的话)。例如在 v-my-directive:foo 中,参数是 “foo”。
modifiers:一个包含修饰符的对象 (如果有的话)。例如在 v-my-directive.foo.bar 中,修饰符对象是 { foo: true, bar: true }。
instance:使用该指令的组件实例。
dir:指令的定义对象。
vnode:代表绑定元素的底层 VNode。

prevNode:之前的渲染中代表指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。

模拟v-show指令

<template><h3>自定义指令</h3><p v-myShow="flag">{{ message }}</p><button @click="updateHandler">显隐Toggle</button>
</template>
<script setup>
import { ref } from "vue"
const message = ref("模拟v-show指令")
const flag = ref(true)
function updateHandler(){flag.value = flag.value === true ? flag.value=false : flag.value = true
}
const vMyShow = {updated(el, binding) {binding.value === true ? el.style.display='block' : el.style.display='none'}
}
</script>

相关文章:

自定义指令基础

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives) 选项式API_自定义指令 <template><h3>自定义指令</h3><p v-author>文本信息</p> </template> <script> e…...

​软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第5章 软件工程基础知识&#xff08;190~233&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图...

Oneid方案

一、前文 用户画像的前提是标识出用户&#xff0c;存在以下场景&#xff1a;不同业务系统对同一个人的标识&#xff0c;匿名用户行为的行为归因&#xff1b;本文提供多种解决方案&#xff0c;提供大家思考。 二、方案矩阵 三、其他 相关连接&#xff1a; 如何通过图算法能力获…...

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…...

趣学python编程 (一、计算机基础知识科普)

未来是高度科技化和智能化的时代。过去不识字的叫“文盲”&#xff0c;如今不懂点计算机知识&#xff0c;则可能是新时代的“文盲”。不论从事什么行业&#xff0c;了解下计算机和编程都是有益的。Python 连续多年占据最受欢迎的编程语言榜首&#xff0c;未来Python有机会成为像…...

亚马逊云科技云存储服务指南

文章作者&#xff1a;Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具&#xff0c;可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…...

随机链表的复制

文章目录 &#x1f349;前言&#x1f349;题目&#x1f349;分析&#x1f349;思路一&#xff1a;暴力解法&#x1f349;思路二&#xff1a;很绝的办法 &#x1f349;前言 果然&#xff0c;力扣的简单题不一定简单&#xff0c;但是中等和较难的题一定很麻烦。 这道题相当综合&…...

树莓派4b编译FFmpeg支持硬件编解码

ffmpeg h264_omx解码器充分发挥树莓派gpu性能 准备 树莓派4b ,64位系统 修改树莓派的启动设置文件(/boot/config.txt)进行如下的调整: gpu_mem=256 framebuffer_depth=16安装依赖 常规依赖: sudo apt update sudo apt upgrade sudo apt -y install autoconf automake …...

开启CentOS/Debian自带的TCP BBR加速

BBR 是什么我就不多做介绍了。如果系统自带内核高于4.9 则默认已包含 BBR。 操作方法&#xff1a; 1、使用 root 权限运行下面代码 uname -r //内核版本高于 4.9 就行。2、开启BBR echo "net.core.default_qdiscfq" >> /etc/sysctl.conf echo "net.ip…...

视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法

视频推拉流直播点播系统EasyDSS平台&#xff0c;可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能&#xff0c;可兼容多操作系统&#xff0c;在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。 今天我们来介绍下在…...

CSS---关于font文本属性设置样式总结

目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…...

7、使用真机调试鸿蒙项目

此处以华为手机为例&#xff0c;版本为鸿蒙4.0. 一、打开手机调试功能 1、打开开发者模式 打开“设置”—“关于手机”&#xff0c;连续点击“软件版本”可打开开发者模式 2、开启USB调试功能 打开“设置”—“系统更新”—“开发者选项”&#xff0c;下拉找到“USB调试”…...

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f; 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f;P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预…...

【Python】爬虫代理IP的使用+建立代理IP池

目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时&#xff0c;我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制&#xff0c;我们…...

JS-项目实战-新增水果库存功能实现

1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name); //返回的是NodeList类型}} }//当…...

mysql 常见操作指令

use k_order – 查看版本 select version(); – 查看所有数据库 show databases; – 查看所有执行引擎 show engines; – 查看当前数据库 select database(); – 查看所有table show tables; – 查看默认存储引擎 SHOW VARIABLES LIKE ‘default_storage_engine’; – 系…...

Vue3 生命周期

如下是Vue3的生命周期函数图&#xff1a; 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中&#xff0c;只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成&#xff0c;所有的准备工作做完&#xff0c;…...

rocketmq 安装dashboard1.0.0 mq消息控制台安装 rocketmq控制台安装 rocketmq-dashboard-1.0.0编译安装

1. 官网&#xff1a; 下载 | RocketMQ 2. dashboard安装包位置&#xff1a; 在连接最下面&#xff0c;点击download.zip即可 3. 需要安装maven, 编译命令&#xff1a; mvn clean install -U -Dmaven.test.skiptrue4. 启动jar: java -jar rocketmq-dashboard-1.0.0.jar &…...

常见的数据结构有哪些?

数据结构分为逻辑结构和物理结构。 逻辑结构&#xff1a;指数据元素之间逻辑关系的数据结构&#xff0c;这里的逻辑关系是指数据元素之间的前后间关系&#xff0c;与数据在计算机中的存储位置无关。物理结构&#xff1a;指数据的逻辑结构在计算机存储空间中的存放形式称为数据…...

Spring中有哪几种方法获取HttpSession对象

Spring MVC 可以直接作为Controller的参数传入&#xff1a; RequestMapping(value "/test", method RequestMethod.POST, produces "application/json;charsetUTF-8")ResponseBodypublic Map test(HttpSession session, String otherParam) {//TODOre…...

5G NR Rel16测量上报事件深度解析:从A1到I1的触发机制与应用场景

1. 5G测量上报事件的核心作用 当你用手机刷视频时&#xff0c;有没有想过为什么从客厅走到阳台&#xff0c;视频还能流畅播放不卡顿&#xff1f;这背后其实是5G网络在默默执行"接力赛"——通过基站间的无缝切换保障连续通信。而测量上报事件就是这场接力赛的发令枪&a…...

告别手动画图!用SUMO的netedit快速搭建高速公路交织区路网(附完整XML文件)

高速公路交织区建模实战&#xff1a;SUMO netedit高效操作指南与避坑手册 第一次打开SUMO的netedit时&#xff0c;面对密密麻麻的按钮和参数&#xff0c;大多数交通工程专业的学生都会感到无从下手。尤其是在处理高速公路交织区这类复杂道路结构时&#xff0c;传统的手动绘制方…...

C++ 内存管理的黄金法则

C 内存管理的黄金法则&#xff1a;高效编程的核心准则 在C的世界里&#xff0c;内存管理是开发者必须直面的挑战。从手动分配释放到智能指针的引入&#xff0c;C提供了灵活的控制权&#xff0c;但也要求程序员严格遵守规则以避免内存泄漏、野指针等问题。"谁分配&#xf…...

深入解析HRPWM中的MEP技术:实现微秒级PWM精度控制

1. HRPWM与MEP技术基础概念 PWM&#xff08;脉宽调制&#xff09;技术就像是用开关控制灯泡亮度的原理。想象你快速开关电灯&#xff0c;开关时间比例不同&#xff0c;灯泡亮度就会变化——这就是PWM最基础的工作原理。但在工业控制、电源管理这些对精度要求极高的场景里&#…...

汉字破局:AI时代的文明反攻与英语世界的“偷师”真相

汉字破局&#xff1a;AI时代的文明反攻与英语世界的“偷师”真相今天我们要聊的&#xff0c;从来不是简单的“中文VS英文”语言之争&#xff0c;而是一场席卷AI世界的文明维度大反攻——三千年前刻在龟甲上的甲骨文&#xff0c;那些横平竖直、撇捺交错的线条&#xff0c;正在以…...

ollama-QwQ-32B微调实践:优化OpenClaw的鼠标操作准确率

ollama-QwQ-32B微调实践&#xff1a;优化OpenClaw的鼠标操作准确率 1. 为什么需要微调模型&#xff1f; 去年冬天&#xff0c;当我第一次用OpenClaw自动整理桌面文件时&#xff0c;眼睁睁看着它把"季度报表.xlsx"拖进了"娱乐"文件夹——这个哭笑不得的瞬…...

Cinema 4D 2026液体模拟实战:如何用新功能打造逼真水流效果(附参数设置)

Cinema 4D 2026液体模拟实战&#xff1a;如何用新功能打造逼真水流效果&#xff08;附参数设置&#xff09; 在三维动画和特效设计领域&#xff0c;液体模拟一直是技术难度最高、计算资源消耗最大的环节之一。Cinema 4D 2026针对这一核心功能进行了重大升级&#xff0c;特别是改…...

Qwen2.5-VL-Ollama效果对比:vs Qwen2-VL在图表理解与定位精度提升

Qwen2.5-VL-Ollama效果对比&#xff1a;vs Qwen2-VL在图表理解与定位精度提升 1. 引言&#xff1a;从Qwen2-VL到Qwen2.5-VL的进化 如果你之前用过Qwen2-VL&#xff0c;可能会觉得它已经很强了——能看懂图片&#xff0c;能回答问题&#xff0c;基本的多模态任务都能搞定。但用…...

终极VSCode Blade格式化器高级技巧:自定义HTML属性排序与组件前缀配置指南

终极VSCode Blade格式化器高级技巧&#xff1a;自定义HTML属性排序与组件前缀配置指南 【免费下载链接】vscode-blade-formatter An opinionated Blade file formatter for VSCode 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-blade-formatter vscode-blade-fo…...

手把手教你用哥斯拉Godzilla搭建渗透测试环境(附常见错误解决方案)

实战指南&#xff1a;Windows环境下渗透测试工具的高效配置与排错 在网络安全领域&#xff0c;渗透测试工具的正确配置往往是技术实践的第一步门槛。对于刚接触安全测试的新手来说&#xff0c;从零开始搭建环境不仅需要清晰的步骤指引&#xff0c;更需要理解每个环节可能出现的…...