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

定义:除了Vue内置指令以外的其他 v-开头的指令(需要程序员自行扩展定义)作用:自己定义的指令, 可以封装一些 dom 操作, 扩展

1.自定义指令(directives)

1.用法

定义:除了Vue内置指令以外的其他 v-开头的指令(需要程序员自行扩展定义)
作用:自己定义的指令, 可以封装一些 dom 操作, 扩展额外功能


语法:
① 局部注册
●inserted:被绑定元素插入父节点时调用的钩子函数
●el:使用指令的那个DOM元素


② 全局注册

//在main.js中
// 全局注册v-focus1
Vue.directive('focus1',{inserted(el,binding){console.log(binding);el.focus()}
})
//在Vue组件的配置项中
directives: {"指令名": {inserted () {// 可以对 el 标签,扩展额外功能el.focus()}}
}示例:
<script>
export default { directives:{// 局部注册一个focus的指令'focus':{// el:表示使用了这个指令的dom对象// binding: 描述当前自定义指令的相关属性的一个对象,其中包含了给这个指令赋值的数据inserted(el,binding){console.log(binding)el.focus()  //让文本框自动聚焦}}}}
</script>
  • 在使用指令的时候,一定要先注册再使用,否则会报错
  • 注册指令时不用v-前缀,但使用时一定要加v-前缀

2.指令的值

需求: 实现一个 color 指令 - 传入不同的颜色, 给标签设置文字颜色


步骤:
① 定义指令:通过 binding.value 可以拿到指令值,指令值修改会 触发 update 函数


② 使用指令:通过“等号”的形式为指令 绑定 具体的参数值

<template><div><h2 v-color="color1">指令的值1测试</h2><h2 v-color="color2">指令的值2测试</h2><button @click="color1='green'">改变第一个h1的颜色</button></div>
</template><script>
export default {data () {return {color1: 'red',color2: 'orange'}},directives: {color: {// 1. inserted 提供的是元素被添加到页面中时的逻辑inserted (el, binding) {// console.log(el, binding.value);// binding.value 就是指令的值el.style.color = binding.value},// 2. update 指令的值修改的时候触发,提供值变化后,dom更新的逻辑update (el, binding) {console.log('指令的值修改了');el.style.color = binding.value}}}
}
</script><style></style>

3.案例

<template><dl><dt>用户名:</dt><dd><inputtype="text"class="uname"v-validate="/^[a-zA-Z0-9]{6,16}$/"data-message="输入6~16位数字字母组成"/></dd></dl>
</template><script>
export default {directives: {validate: {inserted(el, binding) {// console.log(el, binding);// <dd class="tip" ></dd>function vali() {const reg = binding.value;let isOK = reg.test(el.value);// console.log(isOK);document.querySelector(".tip") &&document.querySelector(".tip").remove();if (!isOK) {const ddbox = document.createElement("dd");ddbox.className = "tip";ddbox.innerHTML = el.dataset.message;el.parentNode.parentNode.append(ddbox);}}vali();el.addEventListener("input", function () {vali();});},},},
};
</script><style>
dt,
dd {margin: 0;position: relative;
}dl {display: flex;width: 600px;height: 30px;line-height: 30px;
}dl dt {margin-right: 5px;
}dl input {width: 269px;height: 28px;padding-left: 5px;border: 1px solid #ccc;outline: none;background: transparent;line-height: 30px;border-radius: 5px;
}.tip {/* display: none; */position: relative;width: 220px;height: 30px;margin-left: 15px;border: 1px solid #f59fb1;color: #d93c3c;text-align: center;font-size: 14px;background-color: #fff2f5;border-radius: 5px;
}.tip::before {content: "";position: absolute;top: 50%;left: -6px;width: 10px;height: 10px;background-color: #fff2f5;border-left: 1px solid #f59fb1;border-bottom: 1px solid #f59fb1;transform: translateY(-50%) rotate(45deg);
}
</style>

2.插槽(slot)

1.概念

作用:让组件内部的一些 结构 支持 自定义 -> 从外部传入

插槽使用步骤:

1.父组件传结构

2.子组件接收

(给插槽传入内容时,可以传入纯文本、html标签、组件)

  1. 外部使用组件时,不传东西,则slot会显示后备内容

  1. 外部使用组件时,传东西了,则slot整体会被换掉

2.具名插槽

需求:一个组件内有多处结构,需要外部传入标签,进行定制

弹框中有三处不同,但是默认插槽只能定制一个位置,这时候怎么办呢?

具名插槽语法:

  1. 定义组件时:多个slot使用name属性区分名字
  2. 使用组件时:template配合v-slot:名字来分发对应标签

v-slot的简写

v-slot写起来太长,vue给我们提供一个简单写法 v-slot —> #

插槽的本质在于定制化组件,通过不同的父组件的传值来达到子组件的不同展示效果

3.作用域插槽

作用域插槽: 定义slot 插槽的同时, 是可以传值的。给 插槽 上可以 绑定数据,将来 使用组件时可以用
场景:封装表格组件


使用步骤:
1定义组件:
a通过props:{}来接收外部传入的数据
b通过<slot :属性="item"></slot> -> 属性可以自定义,比如 row
2使用组件:
a通过props向组件传递数据
b通过 <template #default="obj">接收组件数据的回传

作用域插槽的本质也就是父子之间的传值的一种简化版本

相关文章:

定义:除了Vue内置指令以外的其他 v-开头的指令(需要程序员自行扩展定义)作用:自己定义的指令, 可以封装一些 dom 操作, 扩展

1.自定义指令(directives) 1.用法 定义&#xff1a;除了Vue内置指令以外的其他 v-开头的指令&#xff08;需要程序员自行扩展定义&#xff09;作用&#xff1a;自己定义的指令, 可以封装一些 dom 操作&#xff0c; 扩展额外功能 语法&#xff1a; ① 局部注册 ●inserted:被绑…...

SpringBoot错误码国际化

先看测试效果&#xff1a; 文件结构 1.中文和英文的错误消息配置 package com.ldj.mybatisflex.common;import lombok.Getter;/*** User: ldj* Date: 2025/1/12* Time: 17:50* Description: 异常消息枚举*/ Getter public enum ExceptionEnum {//# code命名规则&#xff1a;模…...

LeetCode 3066.超过阈值的最少操作数 II:模拟 - 原地建堆O(1)空间 / 优先队列O(n)空间

【LetMeFly】3066.超过阈值的最少操作数 II&#xff1a;模拟 - 原地建堆O(1)空间 / 优先队列O(n)空间 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-operations-to-exceed-threshold-value-ii/ 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一次…...

深度学习中的模块复用原则(定义一次还是多次)

文章目录 1. 模块复用的核心原则&#xff08;1&#xff09;模块是否有**可学习参数**&#xff08;2&#xff09;模块是否有**内部状态**&#xff08;3&#xff09;模块的功能需求是否一致 2. 必须单独定义的模块&#xff08;1&#xff09;nn.Linear&#xff08;全连接层&#x…...

Mac——Cpolar内网穿透实战

摘要 本文介绍了在Mac系统上实现内网穿透的方法&#xff0c;通过打开远程登录、局域网内测试SSH远程连接&#xff0c;以及利用cpolar工具实现公网SSH远程连接MacOS的步骤。包括安装配置homebrew、安装cpolar服务、获取SSH隧道公网地址及测试公网连接等关键环节。 1. MacOS打开…...

安全测评主要标准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 安全测评的主要标准‌包括多个国际和国内的标准&#xff0c;这些标准为信息系统和产品的安全评估提供了基础和指导。 一、安全测评的主要标准 1.1、国际标准 ‌可信计算机系统评估准则&#xff08;TC…...

qBittorent访问webui时提示unauthorized解决方法

现象描述 QNAP使用Container Station运行容器&#xff0c;使用Docker封装qBittorrent时&#xff0c;访问IP:PORT的方式后无法访问到webui&#xff0c;而是提示unauthorized&#xff0c;如图&#xff1a; 原因分析 此时通常是由于设备IP与qBittorrent的ip地址不在同一个网段导致…...

504 Gateway Timeout:网关超时解决方法

一、什么是 504Gateway Timeout&#xff1f; 1. 错误定义 504 Gateway Timeout 是 HTTP 状态码的一种&#xff0c;表示网关或代理服务器在等待上游服务器响应时超时。通俗来说&#xff0c;这是服务器之间“对话失败”导致的。 2. 常见触发场景 Nginx 超时&#xff1a;反向代…...

Vue 实现当前页面刷新的几种方法

以下是 Vue 中实现当前页面刷新的几种方法&#xff1a; 方法一&#xff1a;使用 $router.go(0) 方法 通过Vue Router进行重新导航&#xff0c;可以实现页面的局部刷新&#xff0c;而不丢失全局状态。具体实现方式有两种&#xff1a; 实现代码&#xff1a; <template&g…...

MCP Server开发的入门教程(python和pip)

使用python技术栈开发的简单mcp server 需要安装 MCP server的需要使用python-sdk,python需要 3.10,安装如下 pip install mcpPS: MCP官方使用的是uv包管理工具,我平时使用pip比较多,所以文中以pip为主。因为mcp的一些依赖包版本并不是最新的,所以最好弄一个干净的环境…...

手撕Transformer -- Day7 -- Decoder

手撕Transformer – Day7 – Decoder Transformer 网络结构图 目录 手撕Transformer -- Day7 -- DecoderTransformer 网络结构图Decoder 代码Part1 库函数Part2 实现一个解码器Decoder&#xff0c;作为一个类Part3 测试 参考 Transformer 网络结构 Decoder 代码 Part1 库函数…...

C#异步和多线程,Thread,Task和async/await关键字--12

目录 一.多线程和异步的区别 1.多线程 2.异步编程 多线程和异步的区别 二.Thread,Task和async/await关键字的区别 1.Thread 2.Task 3.async/await 三.Thread,Task和async/await关键字的详细对比 1.Thread和Task的详细对比 2.Task 与 async/await 的配合使用 3. asy…...

使用分割 Mask 和 K-means 聚类获取天空的颜色

引言 在计算机视觉领域&#xff0c;获取天空的颜色是一个常见任务&#xff0c;广泛应用于天气分析、环境感知和图像增强等场景。本篇博客将介绍如何通过已知的天空区域 Mask 提取天空像素&#xff0c;并使用 K-means 聚类分析天空颜色&#xff0c;最终根据颜色占比查表得到主导…...

145.《redis原生超详细使用》

文章目录 什么是redisredis 安装启动redis数据类型redis key操作key 的增key 的查key 的改key 的删key 是否存在key 查看所有key 「设置」过期时间key 「查看」过期时间key 「移除」过期时间key 「查看」数据类型key 「匹配」符合条件的keykey 「移动」到其他数据库 redis数据类…...

Pytorch基础教程:从零实现手写数字分类

文章目录 1.Pytorch简介2.理解tensor2.1 一维矩阵2.2 二维矩阵2.3 三维矩阵 3.创建tensor3.1 你可以直接从一个Python列表或NumPy数组创建一个tensor&#xff1a;3.2 创建特定形状的tensor3.3 创建三维tensor3.4 使用随机数填充tensor3.5 指定tensor的数据类型 4.tensor基本运算…...

【SH】Xiaomi9刷Windows10系统研发记录 、手机刷Windows系统教程、小米9重装win10系统

文章目录 参考资料云盘资料软硬件环境手机解锁刷机驱动绑定账号和设备解锁手机 Mindows工具箱安装工具箱和修复下载下载安卓和woa资源包第三方Recovery 一键安装Windows准备工作创建分区安装系统 效果展示Windows和Android一键互换Win切换安卓安卓切换Win 删除分区 参考资料 解…...

excel仅复制可见单元格,仅复制筛选后内容

背景 我们经常需要将内容分给不同的人&#xff0c;做完后需要合并 遇到情况如下 那是因为直接选择了整列&#xff0c;当然不可以了。 下面提供几种方法&#xff0c;应该都可以 直接选中要复制区域然后复制&#xff0c;不要选中最上面的列alt;选中可见单元格正常复制&#xff…...

HBASE学习(一)

1.HBASE基础架构&#xff0c; 1.1 参考&#xff1a; HBase集群架构与读写优化&#xff1a;理解核心机制与性能提升-CSDN博客 1.2问题&#xff1a; 1.FLUSH对hbase的影响 2. HLog和memstore的区别 hlog中存储的是操作记录&#xff0c;比如写、删除。而memstor中存储的是写入…...

element select 绑定一个对象{}

背景&#xff1a; select组件的使用&#xff0c;适用广泛的基础单选 v-model 的值为当前被选中的 el-option 的 value 属性值。但是我们这里想绑定一个对象&#xff0c;一个el-option对应的对象。 <el-select v-model"state.form.modelA" …...

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时&#xff0c;Kafka Listener 的默认行为是开始监听某个主题。但是&#xff0c;有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener&#xff0c;我们需要三种主要方法…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...