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实现双向绑定、处理不同类型的输入控件以及表单提交的处理。通过构建用户注册表单,我们巩固了对表单处理的理解,并为后续更复杂的应用打下了基础。

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

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

相关文章

二进制安卓清单 binary AndroidManifest - XCTF apk 逆向-2

XCTF 的 apk 逆向-2 题目 wp&#xff0c;这是一道反编译对抗题。 题目背景 AndroidManifest.xml 在开发时是文本 xml&#xff0c;在编译时会被 aapt 编译打包成为 binary xml。具体的格式可以参考稀土掘金 MindMac 做的类图&#xff08;2014&#xff09;&#xff0c;下面的博…

反向代理模块。。

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…

AI常见的算法

人工智能&#xff08;AI&#xff09;中常见的算法分为多个领域&#xff0c;如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途&#xff1a; 1. 机器学习 (Machine Learning) 监督学习 (Supervised Learning) 线性回归 (Linear Regr…

flink StreamGraph解析

Flink程序有三部分operation组成&#xff0c;分别是源source、转换transformation、目的地sink。这三部分构成DAG。 DAG首先生成的是StreamGraph。 用户代码在添加operation的时候会在env中缓存&#xff08;变量transformations&#xff09;&#xff0c;在env.execute()执行的…

WPS数据分析000010

基于数据透视表的内容 一、排序 手动调动 二、筛选 三、值显示方式 四、值汇总依据 五、布局和选项 不显示分类汇总 合并居中带标签的单元格 空单元格显示 六、显示报表筛选页

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则

1.18 逻辑运算引擎&#xff1a;数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…

Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作1 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 Tensor 基本操作torch.max默认指定维度 Tensor 基本操作 torch.max torch.max 实现降维运算&#xff0c;基于指定的 d…

【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程

1. 简介 UDP协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;全称用户数据报协议&#xff0c;它是一种面向非连接的协议&#xff0c;面向非连接指的是在正式通信前不必与对方先建立连接&#xff0c; 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…

动手学深度学习-卷积神经网络-3填充和步幅

目录 填充 步幅 小结 在上一节的例子&#xff08;下图&#xff09; 中&#xff0c;输入的高度和宽度都为3&#xff0c;卷积核的高度和宽度都为2&#xff0c;生成的输出表征的维数为22。 正如我们在 上一节中所概括的那样&#xff0c;假设输入形状为nhnw&#xff0c;卷积核形…

Airflow:精通Airflow任务依赖

任务依赖关系是任何工作流管理系统的核心概念&#xff0c;Apache Airflow也不例外。它们确定在工作流中执行任务的顺序和条件&#xff0c;确保以正确的顺序完成任务&#xff0c;并确保在相关任务开始之前成功完成先决任务。在本文中我们将探讨Apache Airflow中的任务依赖关系&a…

【数据结构】_链表经典算法OJ:合并两个有序数组

目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接&#xff1a;21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…

crontabl循环定时任务和at一次性任务深度使用

文章目录 crontabl【循环定时任务】crontabl说明参数说明格式说明使用示例使用实例脚本无法执行问题官方解决方法crontabl执行报错解决办法crontab中expect脚本不能正常运行解决方案定时任务执行sh脚本中含有的expect脚本方法给crontab添加环境变量 at【一次性定时任务】说明参…

ChatGPT高效处理图片技巧使用详解

ChatGPT&#xff0c;作为OpenAI开发的预训练语言模型&#xff0c;主要用于生成自然语言文本的任务。然而&#xff0c;通过一些技巧和策略&#xff0c;我们可以将ChatGPT与图像处理模型结合&#xff0c;实现一定程度上的图像优化和处理。本文将详细介绍如何使用ChatGPT高效处理图…

全程Kali linux---CTFshow misc入门

图片篇(基础操作) 第一题&#xff1a; ctfshow{22f1fb91fc4169f1c9411ce632a0ed8d} 第二题 解压完成后看到PNG&#xff0c;可以知道这是一张图片&#xff0c;使用mv命令或者直接右键重命名&#xff0c;修改扩展名为“PNG”即可得到flag。 ctfshow{6f66202f21ad22a2a19520cdd…

基于SMPL的三维人体重建-深度学习经典方法之VIBE

本文以开源项目VIBE[1-2]为例&#xff0c;介绍下采用深度学习和SMPL模板的从图片进行三维人体重建算法的整体流程。如有错误&#xff0c;欢迎评论指正。 一.算法流程 包含生成器模块和判别器模块&#xff0c;核心贡献就在于引入了GRU模块&#xff0c;使得当前帧包含了先前帧的先…

深入浅出Linux操作系统大数据定制Shell编程(六)

深入浅出Linux操作系统大数据定制Shell编 1、大数据定制-Shell编程1.1、什么是Shell1.2、Shell脚本执行方式 2、Shell变量2.1、shell变量的定义2.1.1、设置环境变量2.1.2、多行注释 2.2、位置参数变量2.2.1、语法 2.3、预定义变量2.4、运算符2.4.1、条件判断2.4.2、case语句2.4…

SQL-leetcode—1174. 即时食物配送 II

1174. 即时食物配送 II 配送表: Delivery ------------------------------------ | Column Name | Type | ------------------------------------ | delivery_id | int | | customer_id | int | | order_date | date | | customer_pref_delivery_date | date | -------------…

C#AWS signatureV4对接Amazon接口

马上要放假了&#xff0c;需要抓紧时间测试对接一个三方接口&#xff0c;对方是使用Amazon服务的&#xff0c;国内不多见&#xff0c;能查的资(代)料(码)&#xff0c;时间紧比较紧&#xff0c;也没有时间去啃Amazon的文档&#xff0c;主要我的英文水平也不行&#xff0c;于是粗…

30289_SC65XX功能机MMI开发笔记(ums9117)

建立窗口步骤&#xff1a; 引入图片资源 放入图片 然后跑make pprj new job8 可能会有bug,宏定义 还会有开关灯报错&#xff0c;看命令行注释掉 接着把ture改成false 然后命令行new一遍&#xff0c;编译一遍没报错后 把编译器的win文件删掉&#xff0c; 再跑一遍虚拟机命令行…