<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="app">
<button @click="inputVal='你好'">修改数据</button><br>
用户名: <input type="text" v-model.trim="user.username"><br>
密码: <input type="text" v-model.number="user.password"><br>
性别:<input v-model="user.gender" name="gender" type="radio" value="male">男
<input v-model="user.gender" name="gender" type="radio" value="female"> 女<br>
爱好: <input v-model="user.hobby" type="checkbox" value="backetball"> 篮球
<input v-model="user.hobby" type="checkbox" value="footboll"> 足球
<input v-model="user.hobby" type="checkbox" value="pingpang"> 乒乓球<br>
地址:<select v-model="user.address">
<option value="beijing">北京</option>
<option value="shanghai">上海</option>
<option value="taiyuan">太原</option>
</select><br>
介绍:<textarea cols="30" rows="10" v-model="user.description"></textarea>
<button @click="submitHandler">提交</button>
<br>{{user}}
</div>
<script>
let vm = new Vue({
el: "#app",
data: {
user: {
// 复选框有默认值,是个[]空数组
hobby: []
},
},
methods: {
submitHandler() {
let data = JSON.stringify(this.user)
console.log(data);
}
},
created() {
}
})
</script>
</body>
</html>
结果
用v-model指令在表单<input>、<textarea> 及 <select> 元素上创建双向数据绑定。
它会根据控件类型自动选取正确的方法来更新元素。
v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。
你应该通过 JavaScript 在组件的 data 选项中声明初始值。
使用修饰符可以增加表单绑定能力
1. lazy
默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步。可以添加 lazy 修饰符,从而转为在 change 事件之后进行同步
<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg">
2. number
如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符
<input v-model.number="age" type="number">
3. trim
如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符
<input v-model.trim="msg">