Vue.js开发基础——指令

指令是一种在模板中带有v-前缀的特殊属性,通过指令可以定义页面结构。Vue中指令可以分为6类,分别是内容渲染指令、属性绑定指令、事件绑定指令、双向数据绑定指令、条件渲染指令、列表渲染指令。

一、内容渲染指令

想将<script>标签中定义的数据渲染到页面上可以使用内容渲染指令或Mustache语法外。

内容渲染指令用于渲染DOM元素的内容。例如:v-html和v-text。

1.v-html

在使用Vue进行内容渲染时,v-html用于渲染DOM元素的HTML内容,如果内容中包含HTML标签并希望被浏览器解析,可以使用v-html。

语法格式:

<标签名 v-html="数据名"></标签名>

例:1.创建src/components/VHtml.vue文件

<template>
<div v-html="message"></div>
</template>
<script setup>const message = '<strong>每天都开心!</strong>'</script>

2.v-text

v-text用于渲染DOM元素的文本内容,如果文本内容包含HTML标签,浏览器不会对其解析。

语法格式:

<标签名 v-text="数据名"></标签名>

例:2.创建src/components/VText.vue文件

<template>
<div v-text="message"></div>
</template>
<script setup>const message = '<span>每天都开心!</span>'</script>

二、 属性绑定指令

1.v-bind

在Vue开发中为了控制属性的值,需要绑定DOM元素属性,可以用v-bind来实现。

语法格式:

<标签名 v-bind:属性名="数据名"></标签名>

“ v-bind:”后的“属性名”,该属性名的值与数据名进行绑定,数据名需要在<script>标签中定义,当改变数据名的值时,属性值会自动更新,而当属性值改变时,数据名的值不会同步发生改变。

“v-bind:属性名”可以简写为“属性名”。

例:v-bind还支持将属性与字符串拼接表达式绑定。

<div :id="'list'+index"></div>

 例:3.创建src/components/VBind.vue文件

<template>
<p><input type="text" v-bind:placeholder="username"></p>
<p><input type="password" v-bind:placeholder="password"></p>
</template>
<script setup>
const username= '请输入用户名!'
const password= '请输入密码!'
</script>

三、事件绑定指令

1.v-on

在Vue开发中,有时需要需要给DOM元素绑定事件,从而利用事件实现交互效果,可以用事件绑定属性v-on来实现。

语法格式:

<标签名 v-on:事件名="事件处理器"></标签名>

事件名——DOM中的事件名,例如click、input、keyup等;

事件处理器——可以是方法名或内联JavaScript语句。如果逻辑复杂,事件处理器建议使用方法名,方法需要在Script标签中定义,如果逻辑简单,只有一行代码,可以使用内联JavaScript语句。

“v-on:事件名”简写形式——“@事件名”

 例:4.创建src/components/VOn.vue文件

<template>
<button @click="showInfo">输出信息</button>
</template>
<script setup>
const showInfo = () => {
console.log('欢迎来到Vue.js世界!')
}
</script>

四、双向数据绑定指令

在处理表单信息时,经常需要将输出框的值于变量保持同步。可以通过绑定value属性和input事件来实现,示例如下:

<input :value="info" @input="event => info =event.target.value">

1.v-model

在Vue开发中,可以用v-model来实现数据双向绑定,使用它可以在input、textarea和select元素上创建双向数据绑定,它会根据使用的元素自动选取对应的属性和事件组合,负责监听用户的输入事件并更新数据。

语法格式:

<标签名 v-model="数据名"></标签名>

v-model内部会为不同的元素绑定不同的属性和事件,具体如下:

textarea元素和text元素——input元素会绑定value属性和input事件。

checkbox类型和redio类型——input元素会绑定checked属性和change事件。

select元素——会绑定value属性和change事件。

 例:4.使用v-model实现输入款的值与变量保持同步,示例代码如下:

<input v-model ="info">

当info的值发生变化时,输入框的值会发生改变;当输入框的值发生 改变时,info的值也会发生改变。v-model会忽略所有表单元素的value、checked、selected属性的初始值,而将v-model的数据作为数据来源。

2.v-model提供的三个修饰符

为了方便对用户输入的内容进行处理,v-model提供的三个修饰符。

v-model的修饰符
修饰符作用
.number自动将用户输入的值转换为数字类型
.trim自动过滤用户输入的首尾空白字符串
.lazy在change事件而非input事件触发时更新数据

 例:5.使用v-model实现输入款的值与变量保持同步,示例代码如下:

<template>
请输入姓名:<input type="text" v-model="username">
<div>姓名是:{{ username }}</div>
</template>
<script setup>
import { ref } from 'vue'
const username= ref ('请输入用户名!')
</script>

五、条件渲染指令

在Vue中,当需要根据不同的判断结果显示不同的DOM元素时,可以通过条件渲染指令来实现。条件渲染指定可以辅助开发者按需控制DOM元素的显示与隐藏。条件渲染指令有v-if和v-show两种,v-if和v-show都用来决定某一个元素是否在页面上显示。

1.v-if

v-if是根据布尔值切换元素的显示或隐藏状态,本质是通过操作DOM元素来切换显示状态。当给定的值为true时,元素存在于DOM树中;当给定的值为false时,元素从DOM树中移除。

v-if有两种使用方式,具体如下。

(1)直接给定一个条件,控制单个元素的显示或隐藏,语法如下。

<标签名 v-if="条件"></标签名>

(2)通过v-if结合v-else-if、v-else来控制不同元素的显示或隐藏,语法格式如下。

<标签名 v-if="条件A">展示A</标签名>

<标签名 v-else-if="条件B">展示B</标签名>

<标签名 v-else>展示C</标签名>

2.v-show

v-if是通过为元素添加或者移除dispaly:none样式来实现元素的显示或隐藏状态。当需要频繁切换某个元素的显示或隐藏状态时,使用v-show会更加合适。当只要切换一次来显示或隐藏状态时,使用v-if会更加合适。

语法如下。

<标签名 v-show="条件"></标签名>

 例:6.使用v-if和v-show实现元素的显示或隐藏状态,示例代码如下:

<template>
<p v-if="flag">通过v-if控制元素</p>
<p v-show="flag">通过v-show控制元素</p>
<button @click="flag = !flag">显示/隐藏</buton>
</template>
<script setup>
import { ref } from 'vue'
const flag= ref (true)
</script>

当flag为true时,通过v-if、v-show控制的p元素全部显示。点击按钮(显示/隐藏)后p元素均不显示,且通过v-if控制的p元素已经移除,v-show隐藏的p元素被设置了dispaly:none的样式。

六、列表渲染指令

在购物应用开发中,为了方便用户查找商品信息,通常会以商品列表的形式展示商品信息。在商品信息列表中,每件商品的结构都是相同的,如果每件商品的结构都要手动定义,会很繁琐。Vue中列表渲染指令v-for。开发者只需要在模板中定义一件商品的结构,v-for便会根据开发者基于一个数组、对象、数字或字符串来循环渲染一个列表。

(1)使用v-for根据数组渲染列表,语法如下:

<标签名 v-for="(item,index) in arr"></标签名>

arr——给定的数组

item——v-for会根据给定的数组的个数来决定循环次数,循环开始时会依次取出数组中的元素,保存为item。

index——index的值为0开始自增的数字。

(2)使用v-for根据对象渲染列表,语法如下:

<标签名 v-for="(item,name,index) in obj"></标签名>

obj——为给定的对象

item——v-for会根据给定的数组的个数来决定循环次数,循环开始时会依次取出数组中的元素,保存为item。

name——name的值为item在对象中的属性名。

index——index的值为0开始自增的数字。

(3)使用v-for根据数字渲染列表,语法如下:

<标签名 v-for="(item,index) in num"></标签名>

num——为给定的数字。

v-for——会把数字当成循环次数。

item——item的值为循环中的每个数字,初始值为1,每次循环后,item的值会自增1。

index——index的值为0开始自增的数字。

(4)使用v-for根据字符串渲染列表,语法如下:

<标签名 v-for="(item,index) in str"></标签名>

str——为给定的字符串。

v-for——会把根据字符串中字符的个数来决定循环次数。

item——循环时会依次取出字符串中的每个字符,保存为item。

index——index的值为0开始自增的数字。

(name和index的值,可以省略,如果只需要item,则小括号也可以省略,index和item名称也是不固定的)

1.根据一堆数组渲染列表

例:

<template>
<div v-for="(item,index) in list" :key="index">
索引是:{{ index }}——元素的内容是:{{ item }}
</div>
</template>
<script setup>
import { reactive } from 'vue'
const list =  reactive (['HTML','CSS','JavaScript'])
</script>

2.根据对象数据渲染列表

例:

<template>
<div v-for="item in list" :key="item.id">
id是:{{ item.id }}——元素的内容是:{{ item.message }}
</div>
</template>
<script setup>
import { reactive } from 'vue'
const list =  reactive ([
{id:1,message:'梅',},
{id:2,message:'兰',},
{id:3,message:'竹',},
{id:4,message:'菊',}
])
</script>

3.根据对象渲染列表

例:

<template>
<div v-for="(value,name) in user" :key="name">
属性名是:{{ name }}——元素的内容是:{{ value }}
</div>
</template>
<script setup>
import { reactive } from 'vue'
const user=  reactive ({id:11,name :'小明',gender:'男'})
</script>

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

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

相关文章

ubuntu的用户使用

ubuntu系统中的常规用户登录方式 在系统root用户是无法直接登录的,因为root用户的权限过大所以其安全性比较差 在登录系统时一般使用在安装系统时建立的普通用户登录 如果需要超级用户权限: Ubuntu用户密码破解 在系统安装完成后默认grub启动等待时间为0&#xff0c;建议改…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

38 基于单片机的宠物喂食(ESP8266、红外、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用L298N驱动连接P2.3和P2.4口进行电机驱动&#xff0c; 然后串口连接P3.0和P3.1模拟ESP8266&#xff0c; 红外传感器连接ADC0832数模转换器连接单片机的P1.0~P1.…

GEE Landsat 8 可见光影像校正后下载

在遥感影像处理领域&#xff0c;Landsat 8 数据因其 30 米空间分辨率 和 多光谱波段 被广泛应用。处理这些数据时&#xff0c;研究者常常需要对数据进行裁剪、计算指数、图像增强等操作&#xff0c;以满足特定研究需求。 本文将介绍一个 Python 自动化脚本&#xff0c;使用 Goo…

Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

创建HDL兼容的Simulink模型 一、使用Balnk DUT模板二、从HDL Coder库中选择模块三、为DUT开发算法/功能四、为设计创建Testbench五、仿真验证设计功能六、Simulink模型生成HDL代码 这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法…

如何通过 JWT 来解决登录认证问题

1. 问题引入 在登录功能的实现中 传统思路&#xff1a; 登录页面时把用户名和密码提交给服务器服务器验证用户名和密码&#xff0c;并把检验结果返回给后端如果密码正确&#xff0c;则在服务器端创建 session&#xff0c;通过 cookie 把 session id 返回给浏览器 但是正常情…

像素流送api ue多人访问需要什么显卡服务器

关于像素流送UE推流&#xff0c;在之前的文章里其实小芹和大家聊过很多&#xff0c;不过今天偶然搜索发现还是有很多小伙伴&#xff0c;在搜索像素流送相关的问题&#xff0c;搜索引擎给的提示有这些。当然这些都是比较短的词汇&#xff0c;可能每个人真正遇到的问题和想获取的…

Uniad复现学习

在优云平台部署训练&#xff0c;加速训练。 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商&#xff0c;科创板上市&#xff0c;中国云计算第一股。 UCloud&#xff08;优刻得&#xff09;旗下的Compshare算力共享平台具有以下优点…

域名解析系统 DNS

1.域名系统概述 用户与互联网上某台主机通信时&#xff0c;必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用&#xff0c;连接在互联网上的主机不仅有P地址&#xff0c;而…

【软考网工笔记】网络基础理论——网络层

文章目录 中断处理过程数据包组装RIPRSVPipv4RIPv1 & RIPv2HFC 混合光纤同轴电缆&#xff08;Hybrid Fiber Coax&#xff0c;简称HFC&#xff09;BGP (边界网关协议)BGP-4 协议的四种报文ICMP 协议数字语音电子邮件协议MPLS 多协议标记交换ipv6DHCPDNS名称解析过程查询顺序…

go语言 Pool实现资源池管理数据库连接资源或其他常用需要共享的资源

go Pool Pool用于展示如何使用有缓冲的通道实现资源池&#xff0c;来管理可以在任意数量的goroutine之间共享及独立使用的资源。这种模式在需要共享一组静态资源的情况&#xff08;如共享数据库连接或者内存缓冲区&#xff09;下非 常有用。如果goroutine需要从池里得到这些资…

【Delphi】modbus-TCP 协议库

在日常开发中&#xff0c;也会遇到使用modbus的部件&#xff0c;比如温度控制器、读卡器等等&#xff0c;那么使用Delphi开发&#xff0c;也就必须遵守modbus-TCP协议&#xff0c;如果自己使用TCP控件写也没有问题&#xff0c;不过如果有开源的三方库&#xff0c;别人已经调试过…

【Git 操作】-- 将 fork master 分支的最新commit更新到自己的仓库

目录 1.举例 2. 配置上游仓库&#xff08;Upstream&#xff09; 3. 获取上游仓库的更新 4. 切换到你自己的 master 分支 5. 合并上游仓库的 master 分支 6. 解决冲突&#xff08;如果有的话&#xff09; 7. 推送更新到你自己的 GitHub 仓库 1.举例 当我们从 github 的 h…

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook&#xff0c;作为全球领先的社交平台之一&#xff0c;其在技术领域的创新不仅体现在产品功能的实现上&#xff0c;也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分&#xff0c;通过开源&#xff0c;Facebook不仅加速了技术进步&#xff0c;…

荣耀300系列革新发布:科技与美学的里程碑之作

2024年12月2日&#xff0c;全新一代荣耀300系列正式发布&#xff0c;新潮的环球旅拍发布会不仅展现了荣耀追求极致的创新理念&#xff0c;也标志着数字系列迎来科技体验以及美学设计的巨大升级。凭借荣耀领先行业的AI能力以及对底层科技创新的强大驱动&#xff0c;全新荣耀300系…

centos 7 离线安装postgis插件

前一段时间记录了下如何在centos7中离线安装postgresql&#xff0c;因为工作需要&#xff0c;我不仅要安装postgresql&#xff0c;还需要安装postgis插件&#xff0c;这篇文章记录下postgis插件的安装过程。 1. 安装前的参考 如下的链接都是官网上的链接&#xff0c;对你安装p…

ChatGPT/AI辅助网络安全运营之-数据解压缩

在网络安全的世界中&#xff0c;经常会遇到各种压缩的数据&#xff0c;比如zip压缩&#xff0c;比如bzip2压缩&#xff0c;gzip压缩&#xff0c;xz压缩&#xff0c;7z压缩等。网络安全运营中需要对这些不同的压缩数据进行解压缩&#xff0c;解读其本意&#xff0c;本文将探索一…

kube-proxy的iptables工作模式分析

系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…

【Linux】文件操作的艺术——从基础到精通

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;前言&#xff1a;一切皆文件 &#x1f4da;一、C语言的文件接口 &#x1f4d6;1.文件打…

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下&#xff0c;声音处理领域取得了巨大进展。从语音识别&#xff08;ASR&#xff09;到文本转语音&#xff08;TTS&#xff09;&#xff0c;再到个性化声音克隆&#xff0c;这些技术已经深入到我们的日常生活中&#xff1a;语音助手、自动字幕生成、语音导…