Vue(八)——表单数据双向绑定
表单双向绑定:
- 绑定的数据能更新表单的值
- 表单的值能更新所绑定的数据
- 通过
v-model指令来实现双向绑定 v-model——监听用户的输入事件来更新数据
规则:
- 初始化——
v-model会忽略所有表单元素的初始值而总是将 Vue 实例的数据data作为数据来源。 - 关联事件—
v-model在内部为不同的输入元素使用不同的 属性并抛出不同的事件
| 表单类型 | 属性 | 事件 |
|---|---|---|
| text 、 textarea | value | input |
| checkbox、radio | 默认checked,也可做value绑定 | change |
| select | value | change |
注意事项:
- 在文本区域插值 (
<textarea>{{text}}</textarea>) 并不会生效,应用v-model来代替。 - 单个复选框
checkbox可以绑定布尔值,自定义字符串类型;多个复选框可以绑定到数组 - 单选按钮
radio可以绑定字符串 - 选择框
select单选时绑定到字符串,设置多选multiple时可绑定到数组
实例:
<div id="app">
<!-- input text类型,当行文本-->
<input v-model.trim="message" type="text" />
<p>Message is:{{message}}saa</p>
<!-- input textarea类型,当行文本 -->
<textarea v-model="message2" cols="24" rows="4"></textarea>
<p>Message2 is:{{message2}}</p>
<!-- 复选框,绑定数组类型-->
<input type="checkbox" id="jack" value="jack" v-model="team" />
<label for="jack">Jack</label>
<input type="checkbox" id="Mark" value="Mark" v-model="team" />
<label for="Mark">Mark</label>
<input type="checkbox" id="Rondo" value="Rondo" v-model="team" />
<label for="Rondo">Rondo</label>
<input type="checkbox" id="Lucian" value="Lucian" v-model="team" />
<label for="Lucian">Lucian</label>
<p for="team">Now Team:{{team}}</p>
<!-- 复选框也可以绑定bool值,只需要数据在data里声明bool类型-->
<input type="checkbox" id="redis" value = "mmm" v-model="tech" />
<p for="team2">Now Tech:{{tech}}</p>
<!-- 复选框的值绑定也可以自定义,下面就定义了选中和没选中的两种值-->
<input
type="checkbox"
v-model="toggle"
true-value="yes"
false-value="no"
>
<p for="toggle">Now toggle:{{toggle}}</p>
<!-- 单选框 -->
<input type="radio" id="man" value="男" v-model="sex" />
<label for="man">男</label>
<input type="radio" id="woman" value="女" v-model="sex" />
<label for="woman">女</label>
<p for="person">Now Sex:{{sex}}</p>
<!-- 下拉框 -->
<!-- 单选 -->
<select name="" id="" v-model="answer">
<option disabled value="">请选择</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<p for="answer">Now Answer:{{answer}}</p>
<!-- 多选 -->
<div id="example-6">
<select v-model="selected" multiple style="width: 50px;">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<br>
<span>Now multiple Answer: {{ selected }}</span>
</div>
<!-- 使用v-for创建select -->
<select v-model="todayfruit">
<option v-for="item in fruit" v-bind:value ="item.val">{{item.text}}</option>
</select>
<p>Fruit Now:{{todayfruit}}</p>
</div>
javascript:
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
message:"赤红之瞳",
message2:"灵之风息",
team:[],
tech:false,
toggle:"",
sex:"",
answer:"",
selected:[],
fruit:[
{text:"香蕉",val:"banana"},
{text:"苹果",val:"apple"},
{text:"橘子",val:"orange"}
],
todayfruit:""
}
});
</script>
结果:

修饰符
.lazy
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件_之后_进行同步:
<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg">
.number
如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:
<input v-model.number="age" type="number">
这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。
.trim
如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:
<input v-model.trim="msg">
Vue(八)——表单数据双向绑定的更多相关文章
- vue.js的一些事件绑定和表单数据双向绑定
知识点: v-on:相当于: 例如:v-on:click==@click ,menthods事件绑定 v-on修饰符可以指定键盘事件 v-model进行表单数据的双向绑定 <template&g ...
- VUE JS 使用组件实现双向绑定
1.VUE 前端简单介绍 VUE JS是一个简洁的双向数据绑定框架,他的性能超过ANGULARJS,原因是实现的机制和ANGULARJS 不同,他在初始化时对数据增加了get和set方法,在数据se ...
- Angular11 模板表单、响应式表单(自定义验证器)、HTTP、表单元素双向绑定
1 模板表单 模型通过指令隐式创建 技巧01:需要在模块级别引入 FormsModule ,通常在共享模块中引入再导出,然后在需要用到 FormsModule 的模块中导入共享模块就可以啦 impor ...
- vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下
vue iview render里面 没有双向绑定 renderHeader 要序列化 反序列 一下 renderHeader: (h, params) => { return [ h('Rad ...
- vue 数组和对象的双向绑定不响应问题
对象和数组的数据类型是对象,对象是对象这个是毫无疑问的.数组可以把索引当成键名,把索引对应的元素当成该键名的键值. vue对象有些操作不能双向绑定的原因是vue未改变原对象,以及未给新增属性增加set ...
- vue 收集表单数据 (有错误的请各位大佬指点)
收集表单数据: 若: <input type="text"/>, 则v-model收集 的是value值,用户输入的就是value值. 若 ...
- vue v-model 表单控件绑定
v-model 指令在表单控件元素上创建双向数据绑定,下面一一进行示例解释. 1.v-model 双向绑定文本 <!DOCTYPE html> <html> <head ...
- vue.js--基础 数据的双向绑定
所谓双向绑定:就是改变modle,就会改变view,改变view,也会改变modle 下面案例,点击getMthod(),获取msg的内容,在点击setMthod()改变msg的内容,你会发现H1的值 ...
- Vue源码学习之双向绑定
首发地址:CJWbiu's Blog 原理: ‘当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.definePr ...
- VUE 入坑系列 一 双向绑定
html代码 <div id="app"> <p>{{message}}</p> <span>message1</span&g ...
随机推荐
- CRISP-DM的应用与理解
本文分享自天翼云开发者社区<CRISP-DM的应用与理解>,作者:吴****嫄 CRISP-DM是一个数据挖掘项目规划的开放标准流程框架模型,主要分为业务理解.数据理解.数据准备.建模.评 ...
- 百思不得其解,DeepSeek怎么突然就比肩GPT了?
>关注公众号**回复1**>>获取**一线.总监.高管<管理秘籍>** 之前大家都认为中美在AI领域的差距很大,谁曾想春节期间**DeepSeek横空出世**,直接给Op ...
- 如何让领导轻松在本地查看Allure报告
如何让领导轻松在本地查看Allure报告 问题描述 当我们把精心生成的Allure报告原始文件发送给领导后,领导直接打开index.html文件时,页面却一直处于加载状态,无法显示数据. 通过F12开 ...
- Yarn角色
一.ResourceManager ResourceManager中的调度器负责资源的分配 二.NodeManager NodeManager则负责资源的供给和隔离 ResourceManager将某 ...
- 「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
> 由于网页编辑器简陋,无法实现原文档的精心排版,如需原文档可联系... 序 「ximagine」在本篇文章中将介绍「荒岛」目前所使用的显示器测试流程及标准,我们主要使用Calman.Displ ...
- Vue3响应式编程三剑客:计算属性、方法与侦听器深度实战指南
在Vue3开发中,计算属性.方法和侦听器是处理数据逻辑的核心工具.它们各自有不同的作用和适用场景,合理使用这些工具可以显著提升代码的可读性和性能.本篇将深入探讨这三者的定义.使用场景以及实际案例,并通 ...
- ReviOS - 专为游戏优化的 Win11 / Win10 精简版系统
ReviOS介绍 ReviOS 渴望重新创建作为操作系统的 Windows 应该是 - 简单.ReviOS 是一款功能强大.高效的私有操作系统,适用于游戏玩家.高级用户和发烧友.由于资源.占用内存和存 ...
- Educational Codeforces Round 175 (Rated for Div. 2) 比赛记录
Educational Codeforces Round 175 (Rated for Div. 2) 比赛记录 比赛连接 手速场,上蓝场,但是有点唐,C 想错了写了半个多小时,想到正解不到 \(10 ...
- 不上苹果的app store,安装ios应用最简单的方法
不上架appstore,安装app有两种方法,一种是使用企业类型的苹果开发者账号的In house类型的证书和证书profile文件打包,一种是使用个人/公司类型的苹果开发者账号的ad hoc类型的证 ...
- python ImportError: libGL.so.1: cannot open shared object file: No such file or directory
前言 python 报错python ImportError: libGL.so.1: cannot open shared object file: No such file or director ...