vue3第三节(v-model 执行原理)
特殊说明: 以下vue3语法是基于 3.4之前版本进行使用的,3.4之后的版本 引入了 defineModel 宏,后续会介绍defineModel
1、vue3 与vue2 中v-model区别
vue3 中v-model绑定的不再是value,而是modelValue,接收的方法也不再是input,而是update:modelValue
vue2 中v-model的主要原因是由于value和input事件可能另有它用,比如select、textarea,select选择框绑定的是checked,而不是value,同样接受事件也不是input,而是change
如下图:

2、v3 v2 中绑定单个值:
2.1 vue3中双向绑定单个值,以及自定义绑定值时候
v-model 在原生input上使用
父组件
<template><input v-model="myV3Vale" /><!-- 编译之后等价于 --><input :value="myV3Vale" @input="myV3Vale = $event.target.value"/><!-- 引用组件中 // 默认传值是 modelVale--><my-son-com :modelValue="myV3Vale" :otherPropField="otherPropField"@update:modelValue="newValue => myV3Vale = newValue"@update:otherPropField="newValue => myV3Vale = newValue"></my-son-com>
</template>
子组件
// 以下为:MySonCom.vue
<template><input:value="props.modelValue"@input="emit('update:modelValue', $event.target.value)"/>
</template>
<script setup>
// 默认传参必须是modelValue,事件必须是update:modelValue,在子组件中如下:
const props = defineProps({modelValue: String
})
const emits = defineEmits(["update:modelValue"])
const update = (e) => {emits("update:modelValue", e.target.value)
}
//多个参数时 传递额外参数 otherPropField 必须是如下:v-model:otherPropField,对应的事件是update:otherPropField
const otherProp = defineProps({otherPropField: String
})
const othersEmits = defineEmits(["update:otherPropField"])
const otherUpdate = (e) => {emits("update:otherPropField", e.target.value)
}
</script>
2.2、v2 中绑定单个值、多个值
父组件
<template><!-- 默认传值是 value --><my-com-v2 v-model="myV2Value" v-bind:otherField.sync="otherField"/>// 等价与<my-com-v2 :value="myV2Value" @input="myV2Value = $event"/>// 绑定额外参数 使用 .sync<my-com-v2 v-bind:otherField.sync="otherField"/><my-com-v2 v-bind:otherField="otherField" v-on:update:otherField="otherField = $event"/><!-- 在组件中 -->
</template>
子组件 MyComV2.vue
<template><input type="text" :value="myV2Value" @input="inputChange">
</template>
<script>
export default {name: 'MyComV2',props: {value: {type: String,default: ''},otherField: {type: String,default: '其他属性'}},methods: {inputChange(e) {// v2中双向绑定触发只能是 input 事件this.$emit('input', e.target.value)}}
}
</script>
3.vue3 中绑定多个值 基于3.4版本之前,
父组件
<template><my-son-com v-model:name="name" v-model:person="person"></my-son-com>
</template>>
<script setup>
import { ref, reactive} from 'vue'
const name = ref('Andy')
const person = reactive({age: 18,sex: 'MEN'
})
</script>
子组件 MySonCom.vue
建议使用 setup 语法糖,而不是使用 setup() {} 函数
<template><input type="text" :value="name" @input="$emit('update:name', $event.target.value)"><input type="text" :value="person.age" @input="$emit('update:person', $event.target.value)">
</template>
<script setup>
defineProps({name: String,person: Object
})
defineEmits(['update:name', 'update:person'])
</script>
4.vue3 中不在使用.sync 替代方案是 modelValue底层更新逻辑
v3常用修饰符有 .lazy, .number, .trim
<template>默认是每次 input 事件之后更新数据,而添加lazy之后,变成每次change事件之后才能更新数据;<input type="text" v-model.lazy="name">.number 将用户输入的内容转换为 number 数字,如果无法转换为number类型的数字,则会视为无效的输入;<input type="number" v-model.number="age">.trim 将用户输入内容 两端的空格 自动去除;<input type="text" v-model.trim="name">
</template>
相关文章:
vue3第三节(v-model 执行原理)
特殊说明: 以下vue3语法是基于 3.4之前版本进行使用的,3.4之后的版本 引入了 defineModel 宏,后续会介绍defineModel 1、vue3 与vue2 中v-model区别 vue3 中v-model绑定的不再是value,而是modelValue,接收的方法也不再…...
RunnerGo UI自动化测试脚本如何配置
RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂的代码编写即可开展低代码的自动化…...
Android 指南针校准进度计算实现
关于Android中指南针的实现,我们可以使用传感器来获取设备的方向信息,从而实现指南针功能。 Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);sensorManager (SensorManager) getSystemService(Conte…...
c++学习:Lambda练习和数组练习
练习一 进行加减乘除 普通方法 #include <iostream> using namespace std; int add(int a,int b) {return ab; } int min(int a,int b) {return a-b; } int mul(int a,int b) {return a*b; } float divRet(int a,int b) {return (float)a/b; } int main() {int a;int …...
数据仓库和数据湖的区别
数据仓库和数据湖是两种不同的数据存储和管理架构,它们有以下区别: 1.数据结构:数据仓库采用结构化的数据模型,通常是规范化的关系型数据库,其中数据以表格形式组织,使用预定义的模式和架构。而数据湖则是…...
tkinterFrame框架+标签框架LabelFrame+Toplevel窗口的使用
1.在tkinter中,Frame是一个容器小部件用于组织和管理其他小部件。它可以作为一个独立的可见区域,也可以作为其他小部件的父容器。 import tkinter as tk import tkinter.ttk as ttk import tkinter.messagebox as mbm tk.Tk() m.title("tkinter L…...
C 语言中的 char 关键字详解
1. char类型 char类型用于存储单个字符,占用1个字节的内存空间。在C语言中,char类型可以用于存储ASCII码表中的任意字符,包括大小写字母、数字、标点符号等。例如: char ch A;在这个例子中,变量ch存储了字符A的ASCI…...
信息安全管理与评估赛题解析-应急响应(含环境)
服务器应急响应 文章目录 服务器应急响应题目:答案:192.168.1.7答案:Linux x86_64答案:shodan答案:DIRSEARCH答案:24/Apr/2022:15:26:42答案:2022答案:/var/www/html/footer.php答案:./prism答案:/root/.mal/prism答案:后门行为相关资源...
微服务-微服务Spring Security OAuth 2实战
1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供了一个安全、轻…...
二次供水物联网:HiWoo Cloud助力城市水务管理升级
随着城市化的快速推进,二次供水系统作为城市基础设施的重要组成部分,其稳定运行和高效管理显得至关重要。然而,传统的二次供水管理方式在应对复杂多变的城市供水需求时,显得力不从心。为了破解这一难题,HiWoo Cloud平台…...
P1015 [NOIP1999 普及组] 回文数
题目传送门 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个…...
【MATLAB】兔子机器人动力学模型解读(simulink中的simscape的各模块介绍)
1、动力学模型 Rectangular Joint 控制平面上(x,y轴)的移动,去掉以后,机器人在原地翻滚不移动 Rigid Transform 坐标转换,B站视频已收藏 去掉,机体与地面贴合 此处的作用是设定机体的初…...
小程序配置服务器域名
要配置小程序的服务器域名,您需要在小程序后台进行以下步骤: 登录小程序后台,进入开发设置页面。找到服务器域名配置选项,点击添加域名。输入您的服务器域名,可以添加多个域名,包括请求域名、上传文件域名…...
探究全链路压力测试的含义与重要性
全链路压力测试是指对整个应用系统的各个环节或组件进行压力测试,以模拟实际生产环境中的用户负载和流量,评估系统在高负载条件下的性能表现。 1. 全链路压力测试的含义 全链路压力测试涉及系统的所有组件和环节,包括前端用户界面、应用服务器…...
代码随想录算法训练营day64 || 84. 柱状图中最大的矩形
单调栈,又一次经典来袭! LeetCode:84.柱状图中最大的矩形_哔哩哔哩_bilibili 首先补充昨天接雨水题目解法的更新,代码随想录 中给出双指针和单调栈的解法,其中所采用的思想是计算每一列可以容纳的雨水,非常…...
图的简单介绍
定义及术语 G(V,E):图G的顶点集为V,边集为E。分为有向图和无向图两类。 顶点的度:与该结点相连的边的条数。 出度:顶点的出边条数 入度:顶点的入边条数 顶点的权值称为点权,边的权值称为边权。 存储 1.邻…...
【C#小知识】c#中的delegate(委托)和event(事件)
今天来介绍一下delegate和event。delegate在c#中可以定义一个函数类型,可以将函数作为一个对象来使用。event在c#中则可以看做一个函数的集合,event中包含了一个或多个函数。 delegate using System;public class MyClass {//定义委托public delegate v…...
车规级存储芯片SPI NOR Flash
国产SPI NOR Flash厂家聚辰提供多种容量选择,可满足多种实时操作系统所需的不同存储空间;并且,拥有四种不同电压范围,分别为3V、1.8V、1.2V以及针对电池供电应用推出的1.65V~3.6V宽压供电的产品系列;同时,提…...
CSS轻松学:简单易懂的CSS基础指南
css基础 更多web开发知识欢迎访问我的专栏>>> 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。 书写位置:…...
06 Qt自绘组件:Switch动画开关组件
系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…...
从‘Push to Trip’红色按钮讲起:手把手教你进行漏电断路器功能测试与日常维护
从‘Push to Trip’红色按钮讲起:手把手教你进行漏电断路器功能测试与日常维护 当你面对配电箱里那个神秘的红色按钮时,是否曾犹豫过该不该按下去?作为家庭用电安全的第一道防线,漏电断路器上的每个设计细节都暗藏玄机。本文将带你…...
Vue v-slot → 用 VuReact 转换后变成这样的 React 代码
VuReact 是一个能将 Vue 3 代码编译为标准、可维护 React 代码的工具。今天就带大家直击核心:Vue 中常见的 v-slot 指令经过 VuReact 编译后会变成什么样的 React 代码? 前置约定 为避免示例代码冗余导致理解偏差,先明确两个小约定…...
如何快速掌握MelonLoader:Unity游戏模组加载器的完整实战指南
如何快速掌握MelonLoader:Unity游戏模组加载器的完整实战指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader Melon…...
FreeRTOS临界区实战:从taskENTER_CRITICAL()到中断安全的数据保护
FreeRTOS临界区实战:从taskENTER_CRITICAL()到中断安全的数据保护 在嵌入式实时系统中,多任务与中断的并发操作就像一场精心编排的交响乐——每个乐器(任务或中断)都需要在正确的时间发声,但某些关键段落必须由单一乐器…...
从共享单车需求预测看ST-Norm:为什么你的时序模型总忽略局部特征?
从共享单车需求预测看ST-Norm:为什么你的时序模型总忽略局部特征? 清晨7点的纽约曼哈顿,金融区的共享单车站点在30分钟内被抢空,而两公里外的学校区域却仍有大量闲置车辆。这种"时空错配"现象背后,隐藏着传统…...
Mac上Python调用Wind量化接口的完整避坑指南
1. Mac上Wind量化接口的特殊性 第一次在Mac上配置Wind量化接口时,我踩了不少坑。和Windows不同,Mac上的Wind生态简直像两个平行世界。Windows用户点几下鼠标就能搞定的事情,在Mac上可能要折腾大半天。最让人崩溃的是,Mac版的Wind…...
从光谱分析到过程监控:偏最小二乘(PLS)在工业领域的实战避坑指南
从光谱分析到过程监控:偏最小二乘(PLS)在工业领域的实战避坑指南 在制药厂的质量控制实验室里,近红外光谱仪正快速扫描着流水线上的药片。数百个波长数据在屏幕上闪烁,而工程师需要从中准确预测活性成分含量——这正是偏最小二乘回归(PLS)大显…...
保姆级教程:用Java搞定西门子S7-1200/1500 PLC数据读写(附完整代码)
工业级Java与西门子S7-1200/1500 PLC通信实战指南 在工业自动化领域,西门子S7系列PLC凭借其稳定性和高性能成为生产线控制的核心设备。当企业需要将生产数据整合到MES系统或工业物联网平台时,如何用Java高效稳定地读写PLC数据就成为关键问题。不同于传统…...
Zynq Linux系统下XVC服务器配置全记录:从设备树修改到xvcServer.c编译运行
Zynq Linux系统下XVC服务器深度配置指南:从设备树到服务部署 在嵌入式系统开发中,调试工具的灵活性和可靠性直接影响开发效率。XVC(Xilinx Virtual Cable)作为一种基于TCP/IP协议的远程调试方案,为Zynq平台开发者提供了…...
软件精准营销化的目标客户与触达策略
在数字化浪潮席卷全球的今天,软件精准营销已成为企业提升市场竞争力的核心手段。通过精准识别目标客户并制定高效的触达策略,企业能够以更低的成本实现更高的转化率。本文将深入探讨软件精准营销的目标客户定位与触达策略,帮助企业在激烈的市…...
