Vue——表单输入绑定
目录
基本用法
文本
多行文本
复选框
选择器
值绑定
复选框
单选按钮
选择器选项
修饰符
.lazy
.number
.trim
组件上的 v-model
在前端处理表单时,我们常常需要将表单输入框的内容同步给 JavaScript 中相应的变量。手动连接值绑定和更改事件监听器可能会很麻烦:
<input:value="text"@input="event => text = event.target.value">
v-model 指令帮我们简化了这一步骤:
<input v-model="text">
另外,v-model 还可以用于各种不同类型的输入,<textarea>、<select> 元素。它会根据所使用的元素自动使用对应的 DOM 属性和事件组合:
- 文本类型的
<input>和<textarea>元素会绑定valueproperty 并侦听input事件; <input type="checkbox">和<input type="radio">会绑定checkedproperty 并侦听change事件;<select>会绑定valueproperty 并侦听change事件。
注意
v-model会忽略任何表单元素上初始的value、checked或selectedattribute。它将始终将当前绑定的 JavaScript 状态视为数据的正确来源。你应该在 JavaScript 中使用data选项来声明该初始值
基本用法
文本
<p>Message is: {{ message }}</p>
<input v-model="message" placeholder="edit me" />

注意
对于需要使用 IME 的语言 (中文,日文和韩文等),你会发现
v-model不会在 IME 输入还在拼字阶段时触发更新。如果你的确想在拼字阶段也触发更新,请直接使用自己的input事件监听器和value绑定而不要使用v-model。
多行文本
<span>Multiline message is:</span>
<p style="white-space: pre-line;">{{ message }}</p>
<textarea v-model="message" placeholder="add multiple lines"></textarea>

注意在 <textarea> 中是不支持插值表达式的。请使用 v-model 来替代:
<!-- 错误 -->
<textarea>{{ text }}</textarea><!-- 正确 -->
<textarea v-model="text"></textarea>
复选框
单一的复选框,绑定布尔类型值:
<input type="checkbox" id="checkbox" v-model="checked" />
<label for="checkbox">{{ checked }}</label>

我们也可以将多个复选框绑定到同一个数组或集合的值:
export default {data() {return {checkedNames: []}}
}
<div>Checked names: {{ checkedNames }}</div><input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label><input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label><input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>

在这个例子中,checkedNames 数组将始终包含所有当前被选中的框的值。
单选按钮
<div>Picked: {{ picked }}</div><input type="radio" id="one" value="One" v-model="picked" />
<label for="one">One</label><input type="radio" id="two" value="Two" v-model="picked" />
<label for="two">Two</label>

选择器
单个选择器的示例如下:
<div>Selected: {{ selected }}</div><select v-model="selected"><option disabled value="">Please select one</option><option>A</option><option>B</option><option>C</option>
</select>

注意
如果
v-model表达式的初始值不匹配任何一个选择项,<select>元素会渲染成一个“未选择”的状态。在 iOS 上,这将导致用户无法选择第一项,因为 iOS 在这种情况下不会触发一个 change 事件。因此,我们建议提供一个空值的禁用选项,如上面的例子所示。
多选 (值绑定到一个数组):
<div>Selected: {{ selected }}</div><select v-model="selected" multiple><option>A</option><option>B</option><option>C</option>
</select>

选择器的选项可以使用 v-for 动态渲染:
export default {data() {return {selected: 'A',options: [{ text: 'One', value: 'A' },{ text: 'Two', value: 'B' },{ text: 'Three', value: 'C' }]}}
}
<select v-model="selected"><option v-for="option in options" :value="option.value">{{ option.text }}</option>
</select><div>Selected: {{ selected }}</div>

值绑定
对于单选按钮,复选框和选择器选项,v-model 绑定的值通常是静态的字符串 (或者对复选框是布尔值):
<!-- `picked` 在被选择时是字符串 "a" -->
<input type="radio" v-model="picked" value="a" /><!-- `toggle` 只会为 true 或 false -->
<input type="checkbox" v-model="toggle" /><!-- `selected` 在第一项被选中时为字符串 "abc" -->
<select v-model="selected"><option value="abc">ABC</option>
</select>
但有时我们可能希望将该值绑定到当前组件实例上的动态数据。这可以通过使用 v-bind 来实现。此外,使用 v-bind 还使我们可以将选项值绑定为非字符串的数据类型。
复选框
<inputtype="checkbox"v-model="toggle"true-value="yes"false-value="no" />
true-value 和 false-value 是 Vue 特有的 attributes,仅支持和 v-model 配套使用。这里 toggle 属性的值会在选中时被设为 'yes',取消选择时设为 'no'。你同样可以通过 v-bind 将其绑定为其他动态值:
<inputtype="checkbox"v-model="toggle":true-value="dynamicTrueValue":false-value="dynamicFalseValue" />
提示
true-value和false-valueattributes 不会影响valueattribute,因为浏览器在表单提交时,并不会包含未选择的复选框。为了保证这两个值 (例如:“yes”和“no”) 的其中之一被表单提交,请使用单选按钮作为替代。
单选按钮
<input type="radio" v-model="pick" :value="first" />
<input type="radio" v-model="pick" :value="second" />
pick 会在第一个按钮选中时被设为 first,在第二个按钮选中时被设为 second。
选择器选项
<select v-model="selected"><!-- 内联对象字面量 --><option :value="{ number: 123 }">123</option>
</select>
v-model 同样也支持非字符串类型的值绑定!在上面这个例子中,当某个选项被选中,selected 会被设为该对象字面量值 { number: 123 }。
修饰符
.lazy
默认情况下,v-model 会在每次 input 事件后更新数据 (IME 拼字阶段的状态例外)。你可以添加 lazy 修饰符来改为在每次 change 事件后更新数据:
<!-- 在 "change" 事件后同步更新而不是 "input" -->
<input v-model.lazy="msg" />
.number
如果你想让用户输入自动转换为数字,你可以在 v-model 后添加 .number 修饰符来管理输入:
<input v-model.number="age" />
如果该值无法被 parseFloat() 处理,那么将返回原始值。
number 修饰符会在输入框有 type="number" 时自动启用。
.trim
如果你想要默认自动去除用户输入内容中两端的空格,你可以在 v-model 后添加 .trim 修饰符:
<input v-model.trim="msg" />
组件上的 v-model
如果你还不熟悉 Vue 的组件,那么现在可以跳过这个部分。
HTML 的内置表单输入类型并不总能满足所有需求。幸运的是,我们可以使用 Vue 构建具有自定义行为的可复用输入组件,并且这些输入组件也支持 v-model!
相关文章:
Vue——表单输入绑定
目录 基本用法 文本 多行文本 复选框 选择器 值绑定 复选框 单选按钮 选择器选项 修饰符 .lazy .number .trim 组件上的 v-model 在前端处理表单时,我们常常需要将表单输入框的内容同步给 JavaScript 中相应的变量。手动连接值绑定…...
MySQL性能优化(二)索引
文章目录优化手段准备案例索引的本质索引的数据结构不同存储引擎中索引的实践MyIsam (索引没有主次之分、都存放在MYI文件)主键索引其他索引InnoDB(数据即索引、索引即数据)主键索引——聚集索引聚集索引其他索引没有主键的情况&a…...
< 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >
< 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >👉 前言👉 OpenAI的创立👉 ChatGPT有何过人之处?> 效果演示👉 OpenAI看家之作 — GPT自然语言模型> GPT发展史> 里程碑-GPT3> 从…...
改善Instagram客户服务的6个技巧
Instagram仍然是全球前四大社交网络,按用户数量排名。它通过其创新的过滤器、内容创建工具、视频和卷轴选项继续增长并推动流量。这是一个平台,世界顶级名人和有影响力的人可以为全球用户提供有趣和令人印象深刻的内容。 但不仅仅是一个娱乐平台…...
8年经验之谈:4步解决测试与开发人员有争议的bug问题...
“开发认为不是bug,测试如何处理?”很多面试中,测试工程师都会被问到这个问题,不仅仅是面试,工作中测试人员也会遇到这类问题,甚至可能由于某种原因,无论是开发人员还是开发经理就是不愿修改程序…...
Linux日常小技巧shell脚本
在工作中我们常用shell脚本处理一些问题,这里整理了一些工作中常用的简单shell脚本。 定时备份文件 #!/bin/bash backup_dir="/data1/backup" src_dir="/data1/app" date_time=$(date +%Y%m%d_%H%M%S) tar -czvf ${backup_dir}/${date_time}.tar.gz ${sr…...
技术创业者必读:从验证想法到技术产品商业化的全方位解析
导语 | 技术创业之路往往充满着挑战和不确定性,对于初入创业领域的人来说,如何验证自己的创业想法是否有空间、如何选择靠谱的投资人、如何将技术产品商业化等问题都需要认真思考和解决。在「TVP 技术夜未眠」第六期直播中,正马软件 CTO、腾讯…...
Docker Registry 本地镜像发布到私有库
本地镜像发布到私有库流程 是什么1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公…...
Pytorch构建ResNet-50V2
🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍦 参考文章地址: 365天深度学习训练营-第J2周:ResNet-50V2算法实战与解析 🍖 作者:K同学啊 一、ResNetV2与ResNet结构对比 改进点 (a)origi…...
【01】PointNet论文解析
PointNet的应用 1.点云图像的分类(整片点云是什么物体) 2.点云图像的部件分割(整片点云所代表的物体能拆分的结构) 3.点云图像的语义分割(将三维点云环境中不同的物体用不同的颜色区分开) 补充 PointN…...
nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理
1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…...
JavaEE简单示例——基于注解的SSM整合
基于注解的SSM整合 在之前我们进行了基于XML配置文件的整合,这次我们介绍基于注解的SSM框架的整合。基于注解的含义是将我们之前所有的配置文件用java类来代替,也就是我们会在Java类中编写之前我们之前在配置文件中编写的内容。 首先我们将之前我们编写…...
EFBG-06-250双比例阀放大器
EFBG-06-250双比例阀放大器特点: 1.本阀系仅供应驱动元件所需最低的压力及流量的入口节流式节能阀。 2.本阀可使油泵及马达侧的压力随时维持大于负载压0.6-0.9MPa的压差,因而可节省能耗。 3.外置比例放大器参数可调,维修更换简单。...
初级算法-栈与队列
主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-栈与队列一、栈实现队列二、队列实现栈三、有效的括号四、删除字符串中的所有相邻重复项五、逆波兰表达式求值六、滑动窗口最大值七、前K个高频元素栈先进后出,不提供走访功能…...
菜鸟教程之Android学习笔记Service
Service初步 一、StartService启动Service的调用顺序 MainActivity.java package com.example.test2;import androidx.appcompat.app.AppCompatActivity;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View;…...
半个月狂飙1000亿,ChatGPT概念股凭什么?
ChatGPT 掀起了AI股历史上最疯狂的一轮市值狂飙。 自春节后至今,ChatGPT概念股开始了暴走模式,短短半月时间,海天瑞声、开普云等ChatGPT概念股市值累计增加了近1400亿。 如此的爆炸效应,得益于ChatGPT所展现出商业化落地的巨大潜…...
linux使用systemctl
要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件 安装systemd # yum yum install systemd # apt apt install systemd创建并编辑 frps.service 文件 [Unit] DescriptionFrp Server Serv…...
交换机和VLAN简介
一.二层设备(交换机和网桥)的区别简介 1.交换机: 2.网桥: 二.交换机原理介绍 三.VLAN概念介绍 1.VLAN将一个物理区域LAN划分为多个区域 2.作用: 3.标识方式VLAN ID 4.VLAN配置下MAC地址表的三元素 5.交换中的…...
想要拯救丢失的海康威视硬盘录像数据?可采用这三种恢复方法
海康威视作为全球领先的视频监控产品及解决方案提供商,其硬盘录像机可用于对大型公共场所、企事业单位及个人住宅等场所的安全监控。然而在实际使用中,有时会发生硬盘录像数据丢失的情况,这将对用户带来不小的损失和困扰。 硬盘录像数据丢失…...
每周一算法:高精度乘法(一)大整数乘整数
高精度乘法 乘法是我们在比赛中常用到运算之一,但在利用C++进行乘方或者阶乘计算时,由于其结果的增长速度很快,很容易就溢出了。例如: 13 ! = 6 , 227 , 020 , 800 13!=6,227,020,800 13!=6...
保姆级教程:用FLUX.2-Klein-9B在ComfyUI中快速编辑人像照片
保姆级教程:用FLUX.2-Klein-9B在ComfyUI中快速编辑人像照片 1. 准备工作与环境搭建 在开始使用FLUX.2-Klein-9B进行人像编辑前,我们需要先准备好运行环境。这个模型虽然功能强大,但部署过程其实非常简单,跟着步骤走就能快速上手…...
Ubuntu 22.04/20.04 RTX 3050显卡驱动安装避坑指南:从黑屏/dev/***到成功点亮
1. 为什么你的RTX 3050在Ubuntu上会黑屏? 刚给Ubuntu装上RTX 3050显卡,重启后屏幕一片漆黑,只显示/dev/***: clean之类的信息?这场景我太熟悉了——去年给工作室六台Ubuntu工作站装RTX 30系显卡时,每台都经历过这个&qu…...
Alpamayo-R1-10B详细步骤:从supervisorctl服务管理到日志实时监控
Alpamayo-R1-10B详细步骤:从supervisorctl服务管理到日志实时监控 1. 引言:为什么你需要关注这个自动驾驶模型 如果你正在研究自动驾驶,或者对AI如何“看懂”路况并做出决策感到好奇,那么Alpamayo-R1-10B绝对值得你花时间了解。…...
智能简化黑苹果配置:OpCore Simplify为技术爱好者打造的自动化解决方案
智能简化黑苹果配置:OpCore Simplify为技术爱好者打造的自动化解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是…...
从XJTUSE编译原理小测出发:手把手教你用Python实现一个简易的词法分析器
从理论到实践:用Python构建词法分析器的完整指南 编译原理常被视为计算机科学中的"玄学"——课堂上听得云里雾里,考试时全靠死记硬背。但当我第一次用Python实现了一个能识别简单算术表达式的词法分析器后,那些抽象的状态转换图、有…...
技术民主化:OpCore Simplify让黑苹果EFI配置实现零门槛
技术民主化:OpCore Simplify让黑苹果EFI配置实现零门槛 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 为什么全世界仅有0.3%的PC用户尝试…...
VMware性能分配实战:CPU、内存与存储的黄金比例
1. VMware性能分配的核心逻辑 第一次用VMware创建虚拟机时,很多人会直接套用默认配置——比如给Windows 10分配4GB内存、2个vCPU。但当我同时启动3个这样的虚拟机时,宿主机16GB内存瞬间被吃光,而CPU利用率却只有30%。这个现象揭示了VMware资源…...
HarmonyOS6 半年磨一剑 - RcTextarea 组件状态管理与禁用只读机制
文章目录 前言一、焦点状态机1.1 isFocused 驱动的 UI 变化1.2 焦点事件处理流程 二、禁用与只读的本质区别2.1 技术实现对比2.2 视觉表现差异2.3 清空按钮的保护逻辑 三、清空按钮的智能显示策略3.1 双重触发模式3.2 清空按钮的渲染位置3.3 清空操作的完整流程 四、自动聚焦与…...
实战数据结构:利用快马ai一键生成c语言指针实现的链表完整代码
实战数据结构:利用快马AI一键生成C语言指针实现的链表完整代码 指针是C语言的灵魂所在,尤其在实现链表、树等动态数据结构时,指针操作更是不可或缺的核心技能。最近在完成数据结构课程作业时,我尝试用InsCode(快马)平台的AI辅助功…...
逐行Hybrid A*路径规划与混合A星泊车路径规划的源码分析(MATLAB版)
逐行hybrid astar路径规划 混合a星泊车路径规划 带你从头开始写hybridastar算法,逐行源码分析matlab版hybridastar算法咱们今天唠唠混合A星(Hybrid A*)路径规划,这玩意儿在自动泊车场景用得贼溜。和传统A星最大的区别在于它能处理…...
