Vue3一個組件綁定多個 v-model,自定義 prop 和 event 名稱

Vue3一個組件綁定多個 v-model,自定義 prop 和 event 名稱

Vue3v-model默認使用modelValue作為propupdate:modelValue作為事件,而Vue2使用的是valueinput。此外,Vue3允許通過參數的方式為組件添加多個v-model綁定,例如v-model:titlev-model:description,每個都可以對應不同的prop和事件。

例一

一個簡單的雙綁定
多個v-model綁定,比如用戶信息和權限設置。子組件接收兩個v-model,如userNameisAdmin,然后在子組件內部使用modelValue和對應的update事件。不過這里可能需要使用不同的參數,比如v-model:userNamev-model:isAdmin,然后子組件的props應該是userNameisAdmin,事件則是update:userNameupdate:isAdmin

基礎用法 - 用戶信息組件

ChildComponent.vue

<template><div><input :value="userName" @input="$emit('update:userName', $event.target.value)"><inputtype="checkbox":checked="isAdmin"@change="$emit('update:isAdmin', $event.target.checked)"></div>
</template><script setup>
defineProps(['userName', 'isAdmin']);
defineEmits(['update:userName', 'update:isAdmin']);
</script><!-- 父組件使用 -->
<!-- <UserForm v-model:user-name="userData.name" v-model:is-admin="userData.adminStatus" 
/> -->

例二

一個自定義事件名稱
例子可以涉及自定義prop和事件名稱,但根據Vue3的文檔,實際上通過v-model的參數就可以直接指定prop和事件,不需要額外配置。例如,v-model:title="pageTitle"會自動使用title作為propupdate:title作為事件

自定義參數 - 分頁組件

Pagination.vue

<template><div><button @click="$emit('update:currentPage', currentPage - 1)">上一頁</button><span>{{ currentPage }}/{{ totalPages }}</span><button @click="$emit('update:currentPage', currentPage + 1)">下一頁</button></div>
</template><script setup>
defineProps(['currentPage', 'totalPages']);
defineEmits(['update:currentPage']);
</script><!-- 父組件使用 -->
<!-- <Pagination v-model:current-page="page" :total-pages="totalPages"
/> -->

注意:在Vue3中,每個v-model綁定默認對應一個propupdate事件,因此自定義名稱實際上是通過v-model的參數來實現的。例如,v-model:userName對應prop userName和事件update:userName

例三

更復雜的對象傳遞,比如綁定整個對象,需要使用計算屬性的gettersetter

對象參數 - 顏色選擇器

ColorPicker.vue

<template><input type="color" :value="color" @input="$emit('update:color', $event.target.value)"><inputtype="range":value="opacity"@input="$emit('update:opacity', $event.target.value)"min="0"max="1"step="0.1">
</template><script setup>
defineProps({color: String,opacity: Number
});
defineEmits(['update:color', 'update:opacity']);
</script><!-- 父組件使用 -->
<!-- <ColorPicker v-model:color="style.color" v-model:opacity="style.opacity"
/> -->

關鍵點總結:

  1. 使用 v-model:參數名 語法實現多個綁定
  2. 子組件通過 defineProps 接收參數
  3. 通過 update:參數名 事件觸發更新
  4. 參數名會自動轉換為kebab-case(如userName → user-name
  5. 支持任意數量的v-model綁定
  6. 可以組合使用普通propsv-model參數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898238.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLOv11小白的進擊之路(九)創新YOLO11損失函數之NWD損失函數源碼解讀

之前的博客也有對YOLO11的損失函數進行過源碼分析&#xff0c;可以參考&#xff1a;YOLOv11小白的進擊之路&#xff08;六&#xff09;創新YOLO的iou及損失函數時的源碼分析_yolov11的損失函數是什么-CSDN博客最近在做小目標檢測的時候注意到了NWD損失函數&#xff0c;這里對其…

VLN 論文精讀(四)Dynamic Path Navigation for Motion Agents with LLM Reasoning

這篇筆記用來描述2025年發表在arxiv上的一篇有關VLN領域的論文&#xff0c;由港科大和達特茅斯大學聯合發布&#xff0c;其核心思想有以下幾點&#xff1a; 將3D環境轉化為2D平面&#xff1b;2D平面中障礙物分布、機器人起點與終點信息用稀疏矩陣形式進行描述&#xff1b;與LL…

vue3之寫一個aichat ----vite.config.js

vite.config.js的CSS配置 postcss-pxtorem 開發響應式網頁的時候需要用到postcss-pxtorem amfe-flexible amfe-flexible是由阿里團隊開發的一個庫&#xff0c;它可以根據設備的屏幕寬度去動態調整HTML根元素()的字體大小&#xff0c;這意味著無論用戶使用什么尺寸的設備訪問你…

寶石PDF,全新 PC 版本,全部免費

寶石PDF已經運行 3 年時間&#xff0c;有客戶端&#xff0c;小程序&#xff0c;一直未上 PC 版本&#xff0c;隨著客戶端功能升級的不及時&#xff0c;很多用戶建議上 PC 版本。但是飛哥一直忙&#xff0c;這不終于給上了。 同時系統的名稱也從 “PDF云轉換”改為“寶石PDF”&…

.NET8使用EF Core連接SQLite

使用框架 .NET8 在nuget中&#xff0c;需要安裝包&#xff1a; SQLitePCLRaw.bundle_e_sqlite3&#xff0c;版本 2.1.10 Microsoft.EntityFrameworkCore.Sqlite.Core&#xff0c;版本 9.0.0 using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microso…

HTML課后實踐

實驗一 【實驗原理】 在搜索引擎的文本分析中&#xff0c;標題的信息權重要比正文的大&#xff0c;所以標題的樣式非常重要。本實驗通過把標題標記和常規文本進行對比輸出&#xff0c;掌握標題標簽的用法。在網頁中&#xff0c;有時需要為文字設置粗體、斜體或下劃線效果&#…

【紫光同創FPGA開發常用工具】FPGACPLD的下載與固化

文檔內容適配技術問題說明&#xff08;非正文&#xff09;&#xff1a; 1、FPGA&CPLD如何下載位流文件&#xff1b; 2、FPGA外部flash如何固化位流文件&#xff1b; 3、PDS軟件燒錄界面如何新增用戶flash&#xff1b; 4、CPLD內部flash如何固化位流文件&#xff1b; F…

前端傳參+后端接參對照

? Java 后端參數接收注解 & 前端傳參格式對照 后端注解前端 Content-Type前端傳參方式說明RequestParamapplication/x-www-form-urlencodedURL參數 / form表單提交 / Postman form-data常用于 keyvalue 形式的參數&#xff1b;適合少量簡單參數RequestParamURL拼接/api/t…

計算機網絡的框架結構

計算機網絡課程知識體系框架 一、計算機網絡基礎概念 1.1 網絡組成要素 端系統&#xff08;主機、服務器&#xff09;通信鏈路&#xff08;有線/無線介質&#xff09;交換設備&#xff08;路由器、交換機&#xff09;協議體系&#xff08;TCP/IP協議簇&#xff09; 1.2 網絡…

塔能智慧物聯節能方案:點亮城市,賦能工廠

在全球積極倡導節能減排、綠色發展的時代背景下&#xff0c;塔能&#xff08;江蘇&#xff09;科技有限公司憑借其創新的智慧物聯節能一體化解決方案&#xff0c;在城市照明和工廠節能領域取得了顯著成果。該方案不僅為城市的夜晚帶來了明亮且節能的照明&#xff0c;還為工廠的…

Laravel框架下通過DB獲取數據并轉為數組的方法

在Laravel框架中&#xff0c;獲取數據庫信息并將其轉換為數組是一種常見的操作&#xff0c;特別是在處理數據導出、API響應等場景中。Laravel提供了簡潔而強大的數據庫抽象層&#xff0c;旨在簡化這類操作。接下來&#xff0c;我們將探討幾種在Laravel中通過數據庫抽象層&#…

pytorch小記(九):pytorch中創建指定形狀的張量: torch.empty

pytorch小記&#xff08;九&#xff09;&#xff1a;pytorch中創建指定形狀的張量: torch.empty 詳細解釋1. 基本功能2. 語法3. 示例代碼示例 1&#xff1a;創建一個 5 的未初始化張量示例 2&#xff1a;創建一個 23 的未初始化張量示例 3&#xff1a;指定數據類型和設備 4. 注…

Linux cgroup cpuset

cpuset.c 是 Linux cgroup 的 cpuset 子系統的核心實現&#xff0c;這個文件的主要作用是&#xff1a; 實現 cgroup 的 cpuset 子系統管理進程的 CPU 和內存資源訪問權限提供 CPU 和內存節點的獨占功能支持層級化的資源管理提供用戶空間接口來配置和查看資源限制 關鍵數據結構…

Tailwind CSS 學習筆記(一)

一、簡介 Tailwind CSS是一個工具優先的CSS 框架,只需書寫HTML 代碼,無需書寫CSS,即可快速構建美觀的網站。 二、優點 1、簡潔、規整,避免了隨意取類名 Tailwind CSS 的工具類(Utility classes) 能夠為你提供一套約束系統,避免讓你的樣式表中出現隨意的取值。它讓顏色、…

Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點

Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點 這里寫目錄標題 Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點項目介紹開發環境安裝依賴核心代碼解析1. 鍵盤模擬實現2. 鼠標點擊實現 開發要點使用說明注意事項優化建議打包發布項目源碼開發心得參考資料成品工具 項…

Cursor插件市場打不開解決

問題現象&#xff1a; cursor搜索插件的時候提示錯誤&#xff0c;無法搜索安裝插件 error while fetching extensions.failed to fetch 問題原因 cursor默認安裝使用的并不是vs code的插件市場&#xff0c;國內網絡有時候打不開 解決 修改插件市場地址并重啟cursor 打開cur…

【DeepSeek】本地部署DeepSeek的完整教程(Ollama+Docker+Open WebUI)

本地部署DeepSeek的完整教程 文章目錄 本地部署DeepSeek的完整教程寫在前面技術需求詳細步驟一. 安裝Ollama軟件二. 安裝DeepSeek-R1模型三. 安裝Docker軟件四. 配置Web UI界面問題解決1. 打開`docker desktop`時,一直顯示`Docker Engine stopped`2. 用`Docker`拉取`Open WebU…

Java創造型模式之原型模式詳解

設計模式是面向對象設計中的一種標準方法&#xff0c;用于解決常見的設計問題。原型設計模式&#xff08;Prototype Pattern&#xff09;是23種經典設計模式之一&#xff0c;屬于創建型模式&#xff0c;它允許通過復制現有對象來創建新對象&#xff0c;而不是通過構造函數或工廠…

python-leetcode 54.全排列

題目&#xff1a; 給定不含重復數字的數組nums,返回其所有可能的全排列&#xff0c;可以按任意順序返回答案 回溯法 一種通過探索所有可能的候選解來找出所有的解的算法。如果候選解被確認不是一個解&#xff08;或者至少不是最后一個解&#xff09;&#xff0c;回溯算法會通…

python局部變量和全局變量

文章目錄 1.局部變量和全局變量2.局部變量2.1 局部變量的作用2.2 局部變量的生命周期 3. 全局變量3.1 函數不能直接修改全局變量的引用3.2 在函數內部修改全局變量的值3.3 全局變量定義的位置3.4 全局變量命名的建議 1.局部變量和全局變量 &#xff08;1&#xff09;局部變量 …