当前位置: 首页 > news >正文

Vue 3 30天精进之旅:Day 06 - 表单输入绑定

引言

在前几天的学习中,我们探讨了事件处理的基本概念及其在Vue中的应用。今天,我们将进一步了解Vue的表单输入绑定。这是构建用户交互式应用的核心部分,使得我们能够方便地处理用户输入并实时更新数据。本文将介绍如何在Vue中实现单向和双向数据绑定、表单控件的处理以及高级用法。

1. Vue中的数据绑定

Vue.js 提供了简单而灵活的数据绑定机制,使得将DOM元素与Vue实例的数据保持同步变得容易。我们可以通过v-model指令来实现双向数据绑定。

1.1 单向绑定与双向绑定
  • 单向绑定:数据从Vue实例流向视图。视图的变化不会影响数据。
  • 双向绑定:数据和视图相互绑定,数据的变化会反映到视图中,视图的变化也会更新数据。

2. 使用v-model实现双向绑定

v-model是Vue中用于表单输入元素的双向绑定指令。它使得表单输入与Vue实例的数据保持同步。

2.1 基本用法

以下是一个使用v-model的基本示例:

<template><div><label for="username">用户名:</label><input type="text" id="username" v-model="username" /><p>当前用户名: {{ username }}</p></div>
</template><script>
export default {data() {return {username: '',};},
};
</script>

在这个示例中,v-model绑定了username数据属性。用户在输入框中输入的内容会自动更新username的值,同时username的变化也会反映在界面上。

3. 处理不同类型的输入

Vue支持多种表单输入类型,包括文本框、单选框、复选框和下拉列表。下面是如何处理这些不同类型的输入。

3.1 文本框

文本框是最常用的输入控件,使用v-model进行双向绑定非常简单,如上例所示。

3.2 单选框

对于单选框,可以使用v-model来控制一个数据属性。以下是一个单选框的示例:

<template><div><label>性别:</label><label><input type="radio" value="男" v-model="gender" /> 男</label><label><input type="radio" value="女" v-model="gender" /> 女</label><p>选择的性别: {{ gender }}</p></div>
</template><script>
export default {data() {return {gender: '男', // 默认选择男};},
};
</script>

在这个示例中,单选框的值绑定到gender数据属性。用户选择的性别会自动更新,而gender的变化也会反映在界面上。

3.3 复选框

复选框的处理稍有不同,因为它允许多选。可以将复选框的值绑定到一个数组中:

<template><div><label>爱好:</label><label><input type="checkbox" value="足球" v-model="hobbies" /> 足球</label><label><input type="checkbox" value="篮球" v-model="hobbies" /> 篮球</label><label><input type="checkbox" value="游泳" v-model="hobbies" /> 游泳</label><p>选择的爱好: {{ hobbies }}</p></div>
</template><script>
export default {data() {return {hobbies: [], // 存储用户选择的爱好};},
};
</script>

在这个示例中,用户选择的复选框值会被存储在hobbies数组中。

3.4 下拉列表

下拉列表也可以使用v-model来实现双向绑定。以下是一个下拉列表的示例:

<template><div><label for="city">城市:</label><select id="city" v-model="selectedCity"><option value="北京">北京</option><option value="上海">上海</option><option value="广州">广州</option></select><p>选择的城市: {{ selectedCity }}</p></div>
</template><script>
export default {data() {return {selectedCity: '北京', // 默认选择北京};},
};
</script>

4. 处理表单提交

在Vue中,处理表单提交通常涉及到一个提交事件。你可以使用@submit.prevent来阻止默认的表单提交行为,然后在处理函数中执行自定义逻辑。

4.1 表单提交示例

以下是一个简单的表单提交示例:

<template><form @submit.prevent="handleSubmit"><label for="username">用户名:</label><input type="text" id="username" v-model="username" /><button type="submit">提交</button></form>
</template><script>
export default {data() {return {username: '',};},methods: {handleSubmit() {alert(`提交的用户名是: ${this.username}`);// 这里可以添加进一步的逻辑,例如向服务器发送请求},},
};
</script>

在这个示例中,当用户提交表单时,会弹出一个提示框显示提交的用户名,而不会刷新页面。

5. 实践:构建一个用户注册表单

为了巩固今天的学习,我们将构建一个简单的用户注册表单,用户可以输入用户名、选择性别、爱好,并提交表单。

<template><div><h1>用户注册</h1><form @submit.prevent="handleSubmit"><label for="username">用户名:</label><input type="text" id="username" v-model="username" required /><label>性别:</label><label><input type="radio" value="男" v-model="gender" /> 男</label><label><input type="radio" value="女" v-model="gender" /> 女</label><label>爱好:</label><label><input type="checkbox" value="足球" v-model="hobbies" /> 足球</label><label><input type="checkbox" value="篮球" v-model="hobbies" /> 篮球</label><label><input type="checkbox" value="游泳" v-model="hobbies" /> 游泳</label><button type="submit">注册</button></form><h2>用户信息:</h2><p>用户名: {{ username }}</p><p>性别: {{ gender }}</p><p>爱好: {{ hobbies.join(', ') }}</p></div>
</template><script>
export default {data() {return {username: '',gender: '',hobbies: [],};},methods: {handleSubmit() {alert(`注册成功!用户名: ${this.username}, 性别: ${this.gender}, 爱好: ${this.hobbies.join(', ')}`);// 这里可以添加进一步的逻辑,例如向服务器发送请求},},
};
</script><style>
h1 {color: #42b983;
}
label {display: block;margin-top: 10px;
}
</style>

结论

今天,我们深入学习了Vue中的表单输入绑定,包括如何使用v-model实现双向绑定、处理不同类型的输入控件以及表单提交的处理。通过构建用户注册表单,我们巩固了对表单处理的理解,并为后续更复杂的应用打下了基础。

相关文章:

Vue 3 30天精进之旅:Day 06 - 表单输入绑定

引言 在前几天的学习中&#xff0c;我们探讨了事件处理的基本概念及其在Vue中的应用。今天&#xff0c;我们将进一步了解Vue的表单输入绑定。这是构建用户交互式应用的核心部分&#xff0c;使得我们能够方便地处理用户输入并实时更新数据。本文将介绍如何在Vue中实现单向和双向…...

[创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索

关键词&#xff1a; 从系统的角度&#xff0c;麻雀、人体系统、企业系统、软硬件系统、软件系统、通信系统、5G系统是类似的&#xff1a; 都有&#xff1a;内在看不见的规律、外在显性各种现象 都是&#xff1a;输入、处理、输出 都是&#xff1a;静态、要素、组成、结构、组织…...

使用C#对指定的MYSQL数据库进行备份以及常见问题

最近在开发过程中&#xff0c;需要做个MYSQL数据库的备份&#xff0c;大致总结了一下代码&#xff0c;以及常见的坑 string bakName "database" DateTime.Now.ToString("yyyyMMddHHmmss") ".sql";//备份后的数据库文件名var bakupFilePath &q…...

探索人工智能在计算机视觉领域的创新应用与挑战

一、引言 1.1 研究背景与意义 在科技飞速发展的当下&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;已然成为引领新一轮科技革命和产业变革的重要驱动力。作为 AI 领域的关键分支&#xff0c;计算机视觉&#xff08;Computer Vision, CV&#xff0…...

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中&#xff0c;网络请求和响应是服务交互的核心。对于开发者和测试人员来说&#xff0c;能够准确捕获并分析这些请求&#xff0c;是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具&#xff0c;不仅可以捕获普通的HTTP请求&#xff0c;还…...

STM32 对射式红外传感器配置

这次用的是STM32F103的开发板&#xff08;这里面的exti.c文件没有how to use this driver 配置说明&#xff09; 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成&#xff0c;M3固定安装孔&#xff0c;有输出状态指示灯&#xff0c;输出高电平灯灭&#xff0c;输出…...

12 款开源OCR发 PDF 识别框架

2024 年 12 款开源文档解析框架的选型对比评测&#xff1a;PDF解析、OCR识别功能解读、应用场景分析及优缺点比较 这是该系列的第二篇文章&#xff0c;聚焦于智能文档处理&#xff08;特别是 PDF 解析&#xff09;。无论是在模型预训练的数据收集阶段&#xff0c;还是基于 RAG…...

危机13小时:追踪一场GitHub投毒事件

事件概要 自北京时间 2024.12.4 晚间6点起&#xff0c; GitHub 上不断出现“幽灵仓库”&#xff0c;仓库中没有任何代码&#xff0c;只有诱导性的病毒文件。当天&#xff0c;他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒&#xff0c;等待不…...

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…...

游戏策划的分类

P3游戏策划分类 1.程序2.美术3.策划 程序&#xff1a;一般分为客户端程序和服务器程序 客户端程序一般负责游戏的前端画面表现 服务器程序负责游戏的后端运算 美术&#xff1a;角色原画&#xff0c;角色模型动作&#xff0c;场景原画&#xff0c;场景模型&#xff0c;UI设计&a…...

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号&#xff1a;连续变化的信号&#xff08;很多传感器原始输出的信号都为此类信号&#xff09;D——Digital 数字信号&#xff1a;只有高电平和低电平两种变化&#xff08;单片机芯片、微控制芯片所能处理的都是数字信号&#xff09; 下面…...

深入探索 HTML5 拖拽效果 API:打造流畅交互体验

在现代的 Web 开发中&#xff0c;交互性和用户体验一直是开发者关注的重点。HTML5 的拖拽效果 API (Drag and Drop API) 提供了一种非常直观的方式来让网页元素或文件能够被拖动并放置到页面的指定位置&#xff0c;极大提升了用户的交互体验。本篇文章将深入探讨如何使用 HTML5…...

【Healpix】python一种用于将球面划分为均匀区域的技术

Healpix 1、简介2、Healpix的基本原理3、Healpix的优点4、安装及使用4.1 安装healpy4.2 创建Healpix地图4.3 读取和写入Healpix数据4.4 数据插值 5、案例5.1 案例一&#xff1a;宇宙微波背景辐射&#xff08;CMB&#xff09;分析5.2 案例二&#xff1a;星系分布分析5.3 案例三&…...

Go:基于Go实现一个压测工具

文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具&#xff0c;关于压测的内…...

算法-加油站问题

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; function canCompleteCircuit(gas, cost) {// 加油站的总数const n gas.length;// 记录总剩余油量&#xff0c;若总剩余油量小于 0&#xff0c;说明无法绕环…...

UART ,IIC 和SPI三种总线协议

1.UART 1.1 简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;即通用异步收发器。 常见的串行、异步通信总线&#xff0c;两条数据线Tx、Rx&#xff0c;实现全双工通信&#xff0c;常用于主机与外设的通信&#xff0c;点对点。 1.2 硬件连接 交叉…...

Padas进行MongoDB数据库CRUD

在数据处理的领域,MongoDB作为一款NoSQL数据库,以其灵活的文档存储结构和高扩展性广泛应用于大规模数据处理场景。Pandas作为Python的核心数据处理库,能够高效处理结构化数据。在MongoDB中,数据以JSON格式存储,这与Pandas的DataFrame结构可以很方便地互相转换。通过这篇教…...

动手学图神经网络(6):利用图神经网络进行点云分类

利用图神经网络进行点云分类 引言 在本教程中,大家将学习使用图神经网络(Graph Neural Networks, GNN)进行点云分类的基本工具。给定一组对象或点集的数据集,将这些对象嵌入到一个特征空间中,使得它们在特定任务下能够分类。将原始点云作为神经网络的输入,让网络学习捕…...

C语言从入门到进阶

视频&#xff1a;https://www.bilibili.com/video/BV1Vm4y1r7jY?spm_id_from333.788.player.switch&vd_sourcec988f28ad9af37435316731758625407&p23 //枚举常量 enum Sex{MALE,FEMALE,SECRET };printf("%d\n", MALE);//0 printf("%d\n", FEMALE…...

Python中容器类型的数据(下)

集合 集合 (set) 是一种可迭代的、无序的、不能包含重复元素的容器类型的数据。 Python中的集合是一种重要的数据结构&#xff0c;以下为你详细介绍&#xff1a; 定义与特点 无序性&#xff1a;集合中的元素没有固定顺序&#xff0c; {1, 2, 3} 和 {3, 2, 1} 在Python中是同一…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...