好的,我们来学习 v-bind 指令。这个指令是理解 Vue 数据驱动思想的基石。

核心功能v-bind 的作用是将一个或多个 HTML 元素的 attribute (属性) 或一个组件的 prop (属性) 动态地绑定到 Vue 实例的数据上。

简单来说,它在你的数据和 HTML 元素的属性之间建立了一座桥梁。当你的数据变化时,HTML 元素的属性也会自动更新。

v-bind 有一个非常常用的简写形式,就是一个冒号 (:)。在实际开发中,你几乎总会使用简写形式。

例如,v-bind:href:href 是完全等效的。


v-bind 指令(CDN 方式)

下面是一个完整的 HTML 文件,通过多个示例展示了 v-bind 的核心用法。

示例代码

你可以将此代码保存为 .html 文件,并在浏览器中打开。尝试在浏览器的开发者工具中修改 app.vueData 的值,观察页面元素的属性如何实时变化。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue 3 v-bind 示例 (CDN)</title><style>body { font-family: system-ui, sans-serif; padding: 20px; color: #333; }#app { max-width: 800px; margin: 0 auto; padding: 25px; background-color: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }.demo-item { padding: 15px; border: 1px solid #ddd; border-radius: 5px; margin-bottom: 20px; }.demo-item h3 { margin-top: 0; border-bottom: 1px solid #eee; padding-bottom: 10px; }.text-danger { color: red; }.is-active { background-color: #42b883; color: white; font-weight: bold; }.text-large { font-size: 20px; }.static-class { border: 2px solid blue; }button { padding: 8px 15px; border-radius: 4px; border: 1px solid #ccc; cursor: pointer; }button:disabled { cursor: not-allowed; opacity: 0.5; }a { color: #42b883; text-decoration: none; }a:hover { text-decoration: underline; }</style>
</head>
<body><div id="app"><h1>v-bind (简写 :) 使用示例</h1><div class="demo-item"><h3>1. 绑定标准 Attribute</h3><p :id="elementId">这个 p 标签的 ID 是动态绑定的。</p><a :href="linkUrl">这是一个动态链接,指向 Vue 官网</a><br><img :src="imageUrl" alt="Vue Logo" width="50"></div><div class="demo-item"><h3>2. 绑定 Class (最常用)</h3><p class="static-class" :class="{ 'is-active': isActive, 'text-danger': hasError }">对象语法绑定 Class。</p><p :class="[activeClass, largeTextClass]">数组语法绑定 Class。</p><p :class="['static-class', { 'is-active': isActive }]">混合语法绑定 Class。</p></div><div class="demo-item"><h3>3. 绑定 Style</h3><p :style="{ color: activeColor, fontSize: fontSize + 'px' }">对象语法绑定 Style。</p><p :style="[baseStyles, overrideStyles]">数组语法绑定 Style。</p></div><div class="demo-item"><h3>4. 绑定布尔类型 Attribute</h3><button :disabled="isButtonDisabled">这是一个按钮</button><p>当 `isButtonDisabled` 为 `true` 时,按钮被禁用。为 `false` 或 `null` 或 `undefined` 时,`disabled` 属性会被移除。</p></div><div class="demo-item"><h3>5. 一次性绑定多个 Attribute</h3><div v-bind="objectOfAttrs">这个 div 通过一个对象绑定了 id 和 class。</div></div></div><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script>const { createApp, ref, reactive, computed } = Vue;const app = createApp({setup() {// 1. 用于绑定标准 Attribute 的数据const elementId = ref('my-unique-id');const linkUrl = ref('https://vuejs.org');const imageUrl = ref('https://vuejs.org/images/logo.png');// 2. 用于绑定 Class 的数据const isActive = ref(true);const hasError = ref(false);const activeClass = ref('is-active');const largeTextClass = ref('text-large');// 3. 用于绑定 Style 的数据const activeColor = ref('darkblue');const fontSize = ref(18);const baseStyles = reactive({fontWeight: 'bold'});const overrideStyles = reactive({color: 'green',borderLeft: '5px solid green'});// 4. 用于绑定布尔 Attribute 的数据const isButtonDisabled = ref(true);// 5. 用于一次性绑定多个值的对象const objectOfAttrs = reactive({id: 'multi-bind-div',class: 'is-active text-large'});// 方便在控制台操作window.app = {vueData: {elementId, linkUrl, isActive, hasError, activeColor, fontSize, isButtonDisabled, objectOfAttrs}};// 3 秒后改变一些值,来观察动态效果setTimeout(() => {isActive.value = false;hasError.value = true;activeColor.value = 'purple';fontSize.value = 22;isButtonDisabled.value = false;objectOfAttrs.class = 'text-danger'; // 改变对象的属性}, 3000);return {elementId,linkUrl,imageUrl,isActive,hasError,activeClass,largeTextClass,activeColor,fontSize,baseStyles,overrideStyles,isButtonDisabled,objectOfAttrs};}});app.mount('#app');
</script></body>
</html>

主要用法汇总

1. 绑定普通 HTML Attribute

这是最基础的用法。你可以绑定任何标准的 HTML 属性。

  • 语法: :attributeName="dataProperty"
  • 示例: <a :href="userProfileUrl">个人资料</a>
    这里 <a> 标签的 href 属性会随着 userProfileUrl 数据的变化而更新。
2. 绑定 class

这是 v-bind 最强大和常用的功能之一。你可以非常灵活地控制元素的类名。

  • 对象语法: :class="{ 'active-class': isActive, 'error-class': hasError }"
    当数据 isActive 为真值时,元素会拥有 active-class 类名,hasError 同理。
  • 数组语法: :class="[classA, classB]"
    元素会同时拥有 classAclassB 变量所代表的类名。
  • 混合使用: 数组和对象语法可以结合使用,提供了极高的灵活性。
3. 绑定 style (内联样式)

你可以动态地控制元素的内联样式。

  • 对象语法: :style="{ color: activeColor, fontSize: size + 'px' }"
    CSS 属性名推荐使用驼峰式 (fontSize),但也可以用带引号的短横线分隔式 ('font-size')。
  • 数组语法: :style="[baseStyles, overridingStyles]"
    可以将多个样式对象合并应用到一个元素上,后面的对象会覆盖前面对象的同名属性。
4. 绑定布尔类型 Attribute

对于像 disabled, checked, selected 这样的布尔属性,Vue 有特殊的处理逻辑。

  • 语法: :disabled="isButtonDisabled"
  • 规则: 当 isButtonDisabled 的值为真值 (true, '', 对象等) 时,disabled 属性会被添加到元素上。当其值为假值 (false, null, undefined) 时,disabled 属性会被从元素上移除。
5. 绑定一个包含多个 Attribute 的对象

如果你需要为一个元素动态绑定多个属性,可以传递一个对象。

  • 语法: v-bind="objectOfAttrs"
  • 示例: 如果 objectOfAttrs{ id: 'my-el', class: 'active' },那么它等价于 <div id="my-el" class="active">

v-bind 是 Vue 中数据驱动视图的核心,熟练掌握它的各种用法对于编写动态和响应式的界面至关重要。

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

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

相关文章

【设计模式04】单例模式

前言 整个系统中只会出现要给实例&#xff0c;比如Spring中的Bean基本都是单例的 UML类图 无 代码示例 package com.sw.learn.pattern.B_create.c_singleton;public class Main {public static void main(String[] args) {// double check locking 线程安全懒加载 ⭐️ //…

飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案

在数字经济蓬勃发展的当下&#xff0c;企业对智能化开发的需求愈发迫切。飞算数智科技&#xff08;深圳&#xff09;有限公司&#xff08;简称 “飞算科技”&#xff09;作为自主创新型数字科技公司与国家级高新技术企业&#xff0c;凭借深厚的技术积累与创新能力&#xff0c;以…

20250701【二叉树公共祖先】|Leetcodehot100之236【pass】今天计划

20250701 思路与错误记录1.二叉树的数据结构与初始化1.1数据结构1.2 初始化 2.解题 完整代码今天做了什么 题目 思路与错误记录 1.二叉树的数据结构与初始化 1.1数据结构 1.2 初始化 根据列表&#xff0c;顺序存储构建二叉树 def build_tree(nodes, index0):# idx是root开始…

Web应用开发 --- Tips

Web应用开发 --- Tips General后端需要做参数校验代码风格和Api设计风格的一致性大于正确性数据入库时间应由后端记录在对Api修改的时候&#xff0c;要注意兼容情况&#xff0c;避免breaking change 索引对于查询字段&#xff0c;注意加索引对于唯一的字段&#xff0c;考虑加唯…

CSS 安装使用教程

一、CSS 简介 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;是用于为 HTML 页面添加样式的语言。通过 CSS 可以控制网页元素的颜色、布局、字体、动画等&#xff0c;是前端开发的三大核心技术之一&#xff08;HTML、CSS、JavaScript&#xff09;。…

机器学习中为什么要用混合精度训练

目录 FP16与显存占用关系机器学习中一般使用混合精度训练&#xff1a;FP16计算 FP32存储关键变量。 FP16与显存占用关系 显存&#xff08;Video RAM&#xff0c;简称 VRAM&#xff09;是显卡&#xff08;GPU&#xff09;专用的内存。 FP32&#xff08;单精度浮点&#xff09;&…

[附源码+数据库+毕业论文+答辩PPT]基于Spring+MyBatis+MySQL+Maven+vue实现的中小型企业财务管理系统,推荐!

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本中小型企业财务管理就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信…

华为云Flexus+DeepSeek征文 | 对接华为云ModelArts Studio大模型:AI赋能投资理财分析与决策

引言&#xff1a;AI金融&#xff0c;开启智能投资新时代​​ 随着人工智能技术的飞速发展&#xff0c;金融投资行业正迎来前所未有的变革。​​华为云ModelArts Studio​​结合​​Flexus高性能计算​​与​​DeepSeek大模型​​&#xff0c;为投资者提供更精准、更高效的投资…

从模型部署到AI平台:云原生环境下的大模型平台化演进路径

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;部署只是起点&#xff0c;平台才是终局 在过去一年&#xff0c;大语言模型的飞速发展推动了AI生产力浪潮。越来越多…

UI前端大数据可视化创新:利用AR/VR技术提升用户沉浸感

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在大数据与沉浸式技术高速发展的今天&#xff0c;传统二维数据可视化已难以满足复杂数据场景的…

MacOS 安装brew 国内源【超简洁步骤】

​/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"请输入序号&#xff1a;1

GENESIS64:全球知名的工业设备监控与可视化平台

一、概述 GENESIS64是一款由ICONICS开发的先进工业自动化软件平台&#xff0c;专为实现实时数据可视化、智能化监控及管理而设计。该平台采用模块化架构&#xff0c;具有高效的数据处理能力和灵活的扩展性&#xff0c;适用于各类工业环境&#xff0c;帮助企业实现自动化运营&a…

RNN(Recurrent Neural Network,循环神经网络)家族详解(RNN,LSTM,GRU)

文章目录 一、RNN基础&#xff1a;序列建模的核心思想1.1 RNN的本质与核心机制1.2 应用场景与结构分类 二、传统RNN&#xff1a;序列模型的起点2.1 内部结构与数学表达2.2 计算示例2.3 RNN在Pytorch中的API2.4 代码示例2.5 优缺点与梯度问题 三、LSTM&#xff1a;门控机制破解长…

多云密钥统一管理实战:CKMS对接阿里云/华为云密钥服务

某保险公司因阿里云KMS密钥与华为云密钥割裂管理&#xff0c;导致勒索事件中解密失败&#xff01;据统计&#xff0c;73%企业因多云密钥分散管理引发数据恢复延迟&#xff08;IDC 2024&#xff09;。本文将详解安当CKMS统一纳管方案&#xff0c;实现跨云密钥全生命周期管控&…

光伏接入承载力计算仿真:基于图计算技术的自动建模技术研究

光伏接入承载力计算仿真:基于图计算技术的自动建模技术研究 一、 引言:挑战与机遇 光伏发电的大规模接入对中低压配电网的安全稳定运行带来了巨大挑战。精确评估电网对光伏的承载力(Hosting Capacity, HC)是保障消纳与安全的关键。传统承载力评估严重依赖电网仿真,而仿真…

如何在Excel中每隔几行取一行

如何在Excel中每隔几行取一行 摘要&#xff1a; Excel中快速实现每隔n行取一行的技巧&#xff1a;使用OFFSET函数配合ROW函数即可实现。公式为OFFSET(起始单元格,(ROW(A1)-1)*n,)&#xff0c;其中n为间隔行数。例如从A2开始每2行取一行&#xff0c;公式为OFFSET(A2,(ROW(A1)-1)…

【MariaDB】MariaDB Server 11.3.0 Alpha下载、安装、配置

MariaDB是一个开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由MySQL的原始开发者Michael Widenius主导开发。作为MySQL的分支&#xff0c;MariaDB旨在保持与MySQL的高度兼容性&#xff0c;同时提供性能优化、新功能和更好的开源承诺。 目录 MariaDB下载 …

如何保证缓存和数据库的双写一致性

程序员面试资料大全&#xff5c;各种技术书籍等资料-1000G IDEA开发工具- FREE 一、双写一致性问题本质 在分布式系统中&#xff0c;缓存与数据库双写一致性指当数据被修改时&#xff0c;如何确保缓存&#xff08;如Redis&#xff09;和数据库&#xff08;如MySQL&#xff09…

Qt 5.9 XML文件写入指南

Qt 5.9 XML文件写入指南 在Qt 5.9中&#xff0c;有多种方法可以编写XML文件。下面我将介绍三种主要方法&#xff0c;并提供完整的代码示例和最佳实践。 三种XML写入方法对比 方法优点缺点适用场景QXmlStreamWriter高效、内存占用低无树形结构大型XML文件QDomDocument树形结构…

一些ubuntu命令记录(持续补充)

一、查看代码运行占用的内存 1、使用 top 命令 top 命令是一个实时的系统监控工具&#xff0c;可以显示当前系统中所有进程的资源使用情况。运行以下命令&#xff1a; top 在 top 界面中&#xff0c;可以看到每个进程的内存使用情况&#xff08;%MEM 列&#xff09;。 如何…