vue的指令(参数,动态参数,修饰符,缩写等)(2024-05-07)

1、指令概念

指令 (Directives) 是带有 v- 前缀的特殊attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for指令 是例外情况)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

<p v-if="seen">现在你看到我了</p>

v-if 指令:将根据表达式 seen 的值的真假来插入/移除 <p> 元素。

2、指令参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。

v-bind:

// v-bind 指令可以用于响应式地更新 HTML attribute:
<a v-bind:href="url">...</a>//简写
<a :href="url">...</a>//作用:动态的设置html的属性,数据绑定操作
//语法:v-bind:msg="title"
//简写::msg="title"

在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。


v-on:

// v-on 指令,它用于监听 DOM 事件
<a v-on:click="doSomething">...</a>// 简写
<a @click="doSomething">...</a>//1 v-on:事件名=“要执行的少量代码"
//2 v-on:事件名=“函数名"
//3 v-on:事件名=“函数名(实参)"

在这里参数是监听的事件名,告知 v-on指令是绑定事件(方法)的指令,v-on是单击效果的事件。


3、指令动态参数

从 2.6.0 版本之后,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数:

v-bind:

// 注意:参数表达式的写法存在一些约束
<a v-bind:[attributeName]="url"> ... </a>// 例Vue 实例有一个 data property attributeName,其值为 "href"
// 那么这个绑定将等价于 v-bind:href。
<a v-bind:href="url"> ... </a>
//简写
<a :href="url"> ... </a>

这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。

动态参数的值的约束

动态参数预期会求出一个字符串,异常情况下值为 null。这个特殊的 null 值可以被显性地用于移除绑定。任何其它非字符串类型的值都将会触发一个警告。


动态参数表达式的约束

动态参数表达式有一些语法约束,因为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。

例如:

<!-- 这会触发一个编译警告 -->
<a v-bind:['foo' + bar]="value"> ... </a>

变通的办法是使用没有空格或引号的表达式,或用计算属性替代这种复杂表达式。


避免使用大写字符来命名键名

在 DOM 中使用模板时 (直接在一个 HTML 文件里撰写模板),还需要避免使用大写字符来命名键名,因为浏览器会把 attribute 名全部强制转为小写:

<!--
在 DOM 中使用模板时这段代码会被转换为 `v-bind:[someattr]`。
除非在实例中有一个名为“someattr”的 property,否则代码不会工作。
-->
<a v-bind:[someAttr]="value"> ... </a>


同样地,你可以使用动态参数为一个动态的事件名绑定处理函数:

v-on:

<input v-on:[eventName]="doSomething"> ... </input>// 例Vue 实例有一个 data property eventName,其值为 "focus"
// 那么这个绑定将等价于 v-on:focus。
<input v-on:foucs="doSomething"> ... </input>
//简写
<input @foucs="doSomething"> ... </input>

在这个示例中,当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus


4、指令修饰符

修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()

// 1、事件修饰符
<form v-on:submit.prevent="onSubmit">...</form>
//简写
<form @submit.prevent="onSubmit">...</form>// 2、键盘修饰符
// 只有按键为keyCode的时候才触发
<el-input type="text" @keyup.keyCode="shout()"></el-input>// 3、鼠标按键修饰符
// 按下鼠标左键
<el-button @click.left="shout(1)">ok</el-button>// 4、表单修饰符
// 自动过滤用户输入的首尾空格字符,中间的空格不会过滤
<el-input type="text" v-model.trim="value"></el-input><!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a><!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form><!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a><!-- 只有修饰符 -->
<form v-on:submit.prevent></form><!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div><!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div><!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a><!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div><input @keyup.13="submit">

事件修饰符:

1、.stop:阻止事件冒泡

2、.prevent:提交事件不再重新加载页面,可以用来阻止表单提交的默认行为

3、.once:点击事件只会触发一次

4、.native:使用时将被当成原生HTML标签看待


键盘按键修饰符:

1、@keyup:键盘抬起

2、@keydown:键盘按下

3、按键码:在键盘修饰符后面添加.xxx,用于监听按了哪个键

常用按键码:.enter,.tab,.delete,.esc,.up,.down,.space等。


表单修饰符:

1、.lazy:在表单输入时不会马上显示在页面,而是等输入完成失去焦点时才会显示;

2、.trim:过滤表单输入时两边的空格;

3、.number:限制输入数字或将输入的数据转为数字


鼠标按钮修饰符:

1、.left左键点击

2、.right右键点击

3、.middle中键点击

5、指令缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。

当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,

因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

v-bind缩写:

<!-- 完整语法 -->
<a v-bind:href="url">...</a><!-- 缩写 -->
<a :href="url">...</a><!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>

v-on缩写:

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a><!-- 缩写 -->
<a @click="doSomething">...</a><!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

符号 : 与 @ 对于 attribute 名来说都是合法字符,在所有支持 Vue 的浏览器都能被正确地解析。

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

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

相关文章

项目经理【人】任务

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 【人】任务 一、定义团队的基本规则&塔克曼阶梯理论 1.1 定义团队的基本规则 1.2 塔克曼阶梯理论 二、项目经理管理风格 …

CCE云原生混部场景下的测试案例

背景 企业的 IT 环境通常运行两大类进程&#xff0c;一类是在线服务&#xff0c;一类是离线作业。 在线任务&#xff1a;运行时间长&#xff0c;服务流量及资源利用率有潮汐特征&#xff0c;时延敏感&#xff0c;对服务SLA 要求高&#xff0c;如电商交易服务等。 离线任务&…

Pycharm链接远程服务器GPU跑深度学习模型

我们在学习深度学习时&#xff0c;常常会遇到自己笔记本电脑性能不够&#xff0c;显卡性能低&#xff0c;在运行深度学习项目的时候很浪费时间。如果实验室有可用于深度学习的服务器的话&#xff0c;会大大减少代码执行时间&#xff0c;服务器上的GPU算力一般都很高。 本文主要…

【IP:Internet Protocol,子网(Subnets),IPv6:动机,层次编址:路由聚集(rout aggregation)】

文章目录 IP&#xff1a;Internet Protocol互联网的的网络层IP分片和重组&#xff08;Fragmentation & Reassembly&#xff09;IP编址&#xff1a;引论子网&#xff08;Subnets&#xff09;特殊IP地址IP 编址: CIDR子网掩码&#xff08;Subnet mask&#xff09;转发表和转发…

【mysql学习笔记】

创建数据表 命令 create database mydb charset utf8&#xff1b; 创建数据库&#xff0c;使用字符编码为utf-8 &#xff08;create database 数据库名称 charset utf-8&#xff1b;&#xff09; show databases&#xff1b; //展示database里面内容 u…

实用的Chrome 浏览器命令

Google Chrome 浏览器提供了许多快捷命令和实用功能&#xff0c;可以帮助用户提高效率和改善浏览体验。这里列举了一些非常实用的Chrome浏览器命令&#xff1a; 1. **CtrlT** / **CmdT** - 打开一个新的标签页。 2. **CtrlShiftT** / **CmdShiftT** - 重新打开最后关闭的标签页…

智慧之巅:大数据与算力中心的融合演进

智慧之巅&#xff1a;大数据与算力中心的融合演进 1 引言 在这个数据驱动的时代&#xff0c;我们站在了一个前所未有的历史节点上。大数据和算力中心&#xff0c;这两个曾经各自为政的领域&#xff0c;如今正以一种前所未有的方式交织在一起&#xff0c;共同推动着数字经济的蓬…

MFC扩展库BCGControlBar Pro v34.1 - 可视化设计器、主题新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v34.1已正式发布了&#xff0c;这个版本包含了对Windows 10/11字体图标的支持、功能区和…

有哪些方式可以有效地评估精益生产咨询公司的能力?

在寻求精益生产咨询服务的过程中&#xff0c;评估咨询公司的能力至关重要。这不仅关乎企业精益生产转型的成功与否&#xff0c;更直接影响到企业未来的竞争力和发展。那么&#xff0c;有哪些方式可以有效地评估精益生产咨询公司的能力呢&#xff1f; 首先&#xff0c;了解咨询公…

git:分支删除

删除本地分支&#xff1a; git branch -d branch_name其中&#xff0c;branch_name 是你要删除的本地分支的名称。如果分支上有未合并的更改&#xff0c;使用 -d 选项会提示你确认删除。 如果要强制删除未合并的分支&#xff0c;可以使用 -D 选项&#xff1a; git branch -D…

纯血鸿蒙APP实战开发——短视频切换实现案例

短视频切换实现案例 介绍 短视频切换在应用开发中是一种常见场景&#xff0c;上下滑动可以切换视频&#xff0c;十分方便。本模块基于Swiper组件和Video组件实现短视频切换功能。 效果图预览 使用说明 上下滑动可以切换视频。点击屏幕暂停视频&#xff0c;再次点击继续播放…

tensorflow学习笔记(1)环境准备写个简单例子(小白手册)-20240506

一、安装python、tensorflow 1、Mac上默认python已经安装,自带pip 2、pip3 install tensorflow 如果报错,提示pip3版本较低,可以根据提示来更新pip3:/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip 3、然后再使用pip3来安装tensor…

【排序算法】之快速排序

一、算法介绍 快速排序(Quick sort)是由C.A.R.Hoare提出来的。快速排序法又叫分割交换排序法&#xff0c;是目前公认的最佳排序法&#xff0c;也是使用“分而治之”的方式&#xff0c;会先在数据中找到一个虚拟的中间值&#xff0c;并按此中间值将所有打算排序的数据分为两部分…

本地项目上传gitlab

要将本地项目上传到GitLab仓库&#xff0c;请按照以下步骤操作&#xff1a; 在GitLab上创建一个新仓库。初始化本地仓库&#xff08;如果尚未这样做&#xff09;&#xff1a; cd your_project_directory git init 添加所有文件到本地仓库&#xff1a; git add . 提交更改到本…

常用大模型介绍

GPT&#xff08;Generative Pre-Trained Transformer&#xff09; 工作原理&#xff1a; 自我注意机制&#xff08;Self-Attention&#xff09;&#xff1a;GPT基于Transformer架构&#xff0c;该架构的核心组件是自我注意层&#xff0c;它允许模型查看整个输入序列来计算每个…

Verilog中4位数值比较器电路

某4位数值比较器的功能表如下。 请用Verilog语言采用门级描述方式&#xff0c;实现此4位数值比较器 参考代码如下&#xff1a; &#xff08;CSDN代码块不支持Verilog&#xff0c;代码复制到notepad编辑器中&#xff0c;语言选择Verilog&#xff0c;看得更清楚&#xff09; t…

ESP8266固件烧写

概述 因为手上有块闲置的ESP8266开发板&#xff0c;想着拿来倒腾一下WIFI探针&#xff0c;倒腾了一阵测试成功&#xff0c;博文记录用以备忘 硬件 ESP8266 NodeMCU 环境 Windows 11 步骤 1.下载esp32_win32_msys2_environment_and_toolchain-20181001.zip 2.下载xtensa…

docker安装部署服务后docker网段和主机网段冲突解决

一&#xff1a;现象 docker安装后&#xff0c;dockers的内部网段在172.[17-31].xx.xx&#xff0c;如果主机网段在这之间时就可能出现网段冲突问题 二&#xff1a;解决 修改Docker 的 daemon 配置文件(/etc/docker/daemon.json) "default-address-pools": [{"…

SEO之高级搜索指令(二)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议 新手上云 &#xff08;接上一篇。。。。&#xff09; 5 、inanchor: inanchor:指令返回的结果是导入链接锚文字中包含搜索词的页面。百度不支持inanchor:。 比如在 Go…

fork,execve,_exit从第一个程序到所有程序

操作系统启动后到底做了什么 CPU Reset → Firmware → Loader → Kernel _start() → 第一个程序 /bin/init → 程序 (状态机) 执行 系统调用 操作系统会加载 “第一个程序” 寻找启动程序代码 if (!try_to_run_init_process("/sbin/init") ||!try_to_run_init_p…