收集表单数据
示例:
<body><div id="app"><form @submit.prevent="registUser">账号:<input type="text" v-model.trim="account"><br>密码:<input type="password" v-model="password"><br>年龄:<input type="number" v-model.number="age"><br>性别:男<input type="radio" name="sex" value="male" v-model="sex">女<input type="radio" name="sex" value="female" v-model="sex"><br>爱好:学习<input type="checkbox" name="hobby" v-model="hobby" value="study">打游戏<input type="checkbox" name="hobby" v-model="hobby" value="playGame">吃饭<input type="checkbox" name="hobby" v-model="hobby" value="eat"><br>地址:<select v-model="city"><option value="">---请选择---</option><option value="bj">北京</option><option value="wh">武汉</option><option value="zz">郑州</option><option value="sz">深圳</option></select><br>其他信息:<textarea v-model.lazy="other"></textarea><br><input type="checkbox" v-model="agree"> 阅读并接受<a href="https://www.baidu.com">《用户协议》</a><br><button>提交</button></form></div></body><script>Vue.config.productionTip = false;const vm = new Vue({el: '#app',data: {account: '',password: '',age: '',sex: 'female',hobby: [],city: '',other: '',agree: ''},methods: {registUser() {console.log(JSON.stringify(this._data));}}});</script>
如果是<input type='text' />,则v-model收集的是value值,用户输入的就是value值。
如果是<input type='radio' />,则v-model收集的是value值,需要给标签配置value属性。
如果是<input type='checkbox' />,会有不同情况:
- 如果没有配置
value属性,那么收集的就是checked(这一组复选框是否勾选,是布尔值) 如果设置了
value属性,根据v-model绑定的变量的初始值不同而有不同的结果:v-model绑定变量的初始值是字符串或布尔等非数组类型,那么收集的就是checkedv-model绑定变量的初始值是数组,那么收集的就是value组成的数组
v-model有三个修饰符:
.lazy:输入框失去焦点时,vue才会收集输入的数据.number:输入的字符串转换为有效的数字.trim:去除首位空格
