v-bind指令

好的,我們來學習 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;。 如何…