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表单控件绑定(表单数据的自动收集)的更多相关文章

  1. Vue表单控件绑定

    前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...

  2. vue.js基础知识篇(3):计算属性、表单控件绑定

    第四章:计算属性 为了避免过多的逻辑造成模板的臃肿不堪,可使用计算属性来简化逻辑. 1.什么是计算属性 <!DOCTYPE html><html lang="en" ...

  3. 表单控件绑定v-model

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  4. vue2.0 之表单控件绑定

    表单控件绑定v-model 1.文本 <template> <div> <input type="text" name="" v- ...

  5. Vue#表单控件绑定

    使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...

  6. Vue.js学习 Item9 – 表单控件绑定

    基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些 ...

  7. vue v-model 表单控件绑定

    v-model 指令在表单控件元素上创建双向数据绑定,下面一一进行示例解释. 1.v-model 双向绑定文本 <!DOCTYPE html> <html> <head ...

  8. Vue.js-----轻量高效的MVVM框架(七、表单控件绑定)

    话不多说,先上完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  9. Vue.js学习笔记 第七篇 表单控件绑定

    本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...

随机推荐

  1. C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目)项目技术笔记

    导航 1.编译环境 2.项目配置 1.设置附加包含目录 2.设置附加库目录 3.设置附加依赖项 3.CLR中各种定义 1.接口定义 2.类定义 3.枚举定义 4.属性定义 4.CLR中各种使用 1.类 ...

  2. CSharp工程中的几个文件

    以下基于.NET Framework4.6及.NET Core2.0 .csproj 用于配置项目信息,如: 程序集名称.类型 Framework版本 项目所包含的文件信息,如:cs.html.js. ...

  3. 47.Linux-DEVICE_ATTR()介绍及使用示例

    1.介绍 使用DEVICE_ATTR,可以实现驱动在sys目录自动创建文件,我们只需要实现show和store函数即可. 然后在应用层就能通过cat和echo命令来对sys创建出来的文件进行读写驱动设 ...

  4. spring_04bean的生命周期

    一.前言 spring框架中的bean对象生命周期是面试时常考的问题 往往笔试,面试总喜欢问生命周期的问题 二.spring_bean应用上下文生命周期图: 三.生命周期流程(bean应用上下文): ...

  5. 买or不买?如何测试博彩公司赔率是否合理?

    世界杯期间,烧烤店.酒吧都热闹起来了,柔柔我的朋友圈也热闹起来了,有酱紫的: 还有酱紫的: 然后还有酱紫的: 酱紫的: 当然天台也是一如既然的热闹: 似乎人人都在输钱,那真正的赢家在哪里呢?博彩业的真 ...

  6. 【Java每日一题】20170215

    20170214问题解析请点击今日问题下方的“[Java每日一题]20170215”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  7. 大家好,又是新的一天。今天给大家带来一些新的知识:选择器的种类和css的三种样式

    今天我们为大家 选择了 六种 选择器: 1. 标签选择器 2.id选择器 3.class选择器 4.后代选择器 5.子代选择器 6.交集选择器 我们就举三个典型的例子:后代选择器,子代选择器和交集选择 ...

  8. hihoCoder编程练习赛52

    题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...

  9. 微信wx.request

    官方 wx.request 代码,Post 没成功过,使用Get 方式成功了. wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' ...

  10. osx安装sass

    1.安装ruby (1)OS X 缺少的套件管理工具 homebrew 的安装 http://brew.sh/index_zh-tw.html (2)通过homebrew安装ruby // 到文件夹 ...