vue表单控件绑定(表单数据的自动收集)
v-model指令
你可以用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇
但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子
v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值
<template>
<div id="app">
<input v-model="message" placeholder="edit me" />
<p>{{message}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>
多行文本输入框
在文本区域插值( <textarea></textarea> ) 并不会生效,应用 v-model 来代替
<template>
<div id="app">
<textarea v-model="message" placeholder="edit me" />
<!--style="white-space: pre"可以解析换行-->
<p style="white-space: pre">{{message}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>
复选框
单个勾选框,逻辑值
<template>
<div id="app">
<input type="checkbox" id="checkbox" v-model="checked" />
<label for="checkbox">{{checked}}</label>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checked: false
}
}
}
</script>
多个勾选框,绑定到同一个数组
<template>
<div id="app">
<input type="checkbox" id="apple" value="apple" v-model="checkedName" />
<label for="apple">apple</label> <input type="checkbox" id="orange" value="orange" v-model="checkedName" />
<label for="orange">orange</label> <input type="checkbox" id="banana" value="banana" v-model="checkedName" />
<label for="banana">banana</label> <p>{{checkedName}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checkedName: []
}
}
}
</script>
单选按钮
<template>
<div id="app">
<input type="radio" id="apple" value="apple" v-model="checkedName" />
<label for="apple">apple</label> <input type="radio" id="orange" value="orange" v-model="checkedName" />
<label for="orange">orange</label> <input type="radio" id="banana" value="banana" v-model="checkedName" />
<label for="banana">banana</label> <p>{{checkedName}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
checkedName: 'apple'
}
}
}
</script>
列表选择—单选列表/多选列表
<template>
<div id="app">
<select v-model="selected">
<option>apple</option>
<option>orange</option>
<option>banana</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: 'apple'
}
}
}
</script>
多选绑定到一个数组(需要按住Ctrl进行多选)
<template>
<div id="app">
<select v-model="selected" multiple>
<option>apple</option>
<option>orange</option>
<option>banana</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: []
}
}
}
</script>
动态选项,用 v-for 渲染
<template>
<div id="app">
<select v-model="selected">
<option v-for="option in options" :value="option.value">{{option.name}}</option>
</select> <p>{{selected}}</p>
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
selected: 'a',
options: [
{name: 'apple', value: 'a'},
{name: 'orange', value: 'o'},
{name: 'banana', value: 'b'}
]
}
}
}
</script>
修饰符——lazy
在默认情况下, v-model 在 input 事件中同步输入框的值与数据 ,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步
在输入框失去焦点或者电脑窗口改变后或者按enter时,数据会同步更新
<template>
<div id="app">
<input type="text" v-model.lazy="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>
修饰符——number
如果想自动将用户的输入值(输入框输入的值都是字符串类型)转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number给 v-model 来处理输入值
<template>
<div id="app">
<input type="text" v-model.number="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>
修饰符—— trim
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入
<template>
<div id="app">
<input type="text" v-model.trim="message" />
{{message}}
</div>
</template> <script>
export default {
name: 'app',
data () {
return {
message: ''
}
}
}
</script>
修饰符—— prevent
阻止表单提交的默认事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>08_表单输入绑定</title>
</head>
<body>
<div id="demo">
<form action="/xxx" @submit.prevent="handleSubmit">
<span>用户名: </span>
<input type="text" v-model="username"><br> <span>密码: </span>
<input type="password" v-model="pwd"><br> <span>性别: </span>
<input type="radio" id="female" value="女" v-model="sex">
<label for="female">女</label>
<input type="radio" id="male" value="男" v-model="sex">
<label for="male">男</label><br> <span>爱好: </span>
<input type="checkbox" id="basket" value="basket" v-model="likes">
<label for="basket">篮球</label>
<input type="checkbox" id="foot" value="foot" v-model="likes">
<label for="foot">足球</label>
<input type="checkbox" id="pingpang" value="pingpang" v-model="likes">
<label for="pingpang">乒乓</label><br> <span>城市: </span>
<select v-model="cityId">
<option value="">未选择</option>
<option :value="city.id" v-for="(city, index) in allCitys" :key="city.id">{{city.name}}</option>
</select><br>
<span>介绍: </span>
<textarea rows="10" v-model="info"></textarea><br><br> <input type="submit" value="注册">
</form>
</div> <script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
new Vue({
el: '#demo',
data: {
username: '',
pwd: '',
sex: '男',
likes: ['foot'],
allCitys: [{id: 1, name: 'BJ'}, {id: 2, name: 'SS'}, {id: 3, name: 'SZ'}],
cityId: '2',
info: ''
},
methods: {
handleSubmit () {
console.log(this.username, this.pwd, this.sex, this.likes, this.cityId, this.info)
alert('提交注册的ajax请求')
}
}
})
</script>
</body>
</html>
vue表单控件绑定(表单数据的自动收集)的更多相关文章
- Vue表单控件绑定
前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...
- vue.js基础知识篇(3):计算属性、表单控件绑定
第四章:计算属性 为了避免过多的逻辑造成模板的臃肿不堪,可使用计算属性来简化逻辑. 1.什么是计算属性 <!DOCTYPE html><html lang="en" ...
- 表单控件绑定v-model
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- vue2.0 之表单控件绑定
表单控件绑定v-model 1.文本 <template> <div> <input type="text" name="" v- ...
- Vue#表单控件绑定
使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...
- Vue.js学习 Item9 – 表单控件绑定
基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些 ...
- vue v-model 表单控件绑定
v-model 指令在表单控件元素上创建双向数据绑定,下面一一进行示例解释. 1.v-model 双向绑定文本 <!DOCTYPE html> <html> <head ...
- Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)
话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Vue.js学习笔记 第七篇 表单控件绑定
本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...
随机推荐
- SQL Server 怎么在分页获取数据的同时获取到总记录数
SQL Server 获取数据的总记录数,有两种方式: 1.先分页获取数据,然后再查询一遍数据库获取到总数量 2.使用count(1) over()获取总记录数量 SELECT * FROM ( SE ...
- c# 解密微信encryptedData字段
参考链接:https://www.cnblogs.com/jetz/p/6384809.html 我写了一个工具方法,直接照搬链接中的方法,还有一个工具类. public class Encrypt ...
- C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】
最近在看书,看到了对象在内存中的存储方式. 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针. 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指 ...
- 从零开始学安全(二十三)●用PHP编写留言板
<?php include("test.php"); ?> <!DOCTYPE html> <html> <head> <me ...
- 解决微信开发工具上trace无法检测到设备,一直停留在“正在搜索设备...”或者trace panel,choose device老出现device not found
性能 Trace 工具 微信 Andoid 6.5.10 开始,我们提供了 Trace 导出工具,开发者可以在开发者工具 Trace Panel 中使用该功能. 使用方法 PC 上需要先安装 adb ...
- 索引堆(Index Heap)
首先我们先来看一个由普通数组构建的普通堆. 然后我们通过前面的方法对它进行堆化(heapify),将其构建为最大堆. 结果是这样的: 对于我们所关心的这个数组而言,数组中的元素位置发生了改变.正是因为 ...
- 归并排序(MergeSort)和快速排序(QuickSort)的一些总结问题
归并排序(MergeSort)和快速排序(QuickSort)都是用了分治算法思想. 所谓分治算法,顾名思义,就是分而治之,就是将原问题分割成同等结构的子问题,之后将子问题逐一解决后,原问题也就得到了 ...
- svn基本常见操作设置
代码管理工具一开始用的确会有点懵,但是永久了就会发现都是那几下套路,记录下来 托管好了代码一般起冲突了还是想重新搞一下,有个万能的重置操作,那就是重新关联svn项目,以前有时更换地址也是,发现遇到很多 ...
- springboot 学习之路 3( 集成mybatis )
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot 学习之路 9 (项目启动后就执行特定方法)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...