Vue 学习笔记入门篇 表单与v-model
6.1 基本用法
v-model:
VUE提供了v-model指令, 用于在表单类元素上双向绑定事件
可以用于input框,以及textarea等
注意: 所显示的值只依赖于所绑定的数据,不再关心初始化时的插入的value
单选按钮:
- 单个单选按钮,直接用v-bind绑定一个布尔值,用v-model不生效
- 如果是组合使用,就需要v-model来配合value使用,绑定选中的单选框的value值,
此处所绑定的初始值可以随意给
复选框:
- 单个复选框,直接用定一个布尔值,可以用v-model可以用v-bind
- 多个复选框– 如果是组合使用,就需要vmodel来配合value使用,v-model绑定一
个数组—如果绑定的是字符串,则会转化为true。false,与所有绑定的复选框的
checked属性相对应。
下拉框:
- 如果是单选,所绑定的value值初始化可以为数组,也可以为字符串,有value直接优
先匹配一个value值,没有value就匹配一个text值 - 如果是多选,就需要v-model来配合value使用,v-model绑定一个数组,与复选框类
似,字符串会自动转成数组 - v-model一定是绑定在select标签上
总结一下:
如果是单选,初始化最好给定字符串,因为vmodel此时绑定的是静态字符串或者布尔值
如果是多选,初始化最好给定一个数组
6.2 绑定值
- 单选按钮
只需要用v-bind给单个单选框绑定一个value值,此时,v-model绑定的就是他的value
值 - 复选框
- 下拉框
在select标签上绑定value值对option并没有影响
6.3 修饰符
- lazy
- ——v-model默认是在input输入时实时同步输入框的数据,而lazy修饰符,可以使其
在失去焦点或者敲回车键之后在更新 - number
- —————— 将输入 的字符串转化为number类型
- trim
trim自动过滤输入过程中收尾输入的空格
Demo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
v-model的用法: 创建双向数据绑定<br>
<input type="text" v-model="value"> <br>
{{value}}
<br>
<textarea name="" id="" rows="2" cols="30" v-model="msg">
</textarea>
<br>{{msg}}
<hr>
单选框: <br>
单个单选框;
<input type="radio" name="" v-bind:checked="oneradio">
<br>
多个单选框:
第一个:<input type="radio" value="第一个" name="checks" v-model="checkName" />
第二个:<input type="radio" value="第二个" name="checks" v-model="checkName" />
第三个:<input type="radio" value="第三个" name="checks" v-model="checkName" />
<br>
----{{checkName}}
<hr>
单个复选框 v-bind:<input type="checkbox" v-bind:checked="oneradio" >
<br>
用v-model不生效
单个复选框 v-model:<input type="checkbox" v-model="oneradio" >
<hr>
多个复选框:
<br>
第一个:<input type="checkbox" value="第一个" v-model="checks" >
第二个:<input type="checkbox" value="第二个" v-model="checks" >
第三个:<input type="checkbox" value="第三个" v-model="checks" >
<br>
{{checks}}
<hr>
单选下拉框:
<select v-model="selected">
<option value="第一个">第一个</option>
<option value="第二个">第二个</option>
<option value="第三个">第三个</option>
</select>----选中: {{selected}}
<br>
<br>
<br>
<br>
<br>
多选下拉框:
<select v-model="selectedmul" multiple>
<option value="第一个">第一个</option>
<option value="第二个">第二个</option>
<option value="第三个">第三个</option>
</select>----选中: {{selectedmul}}
<hr>
绑定值: <br>
<input type="radio" v-model="picked" v-bind:value="value">
---{{picked}}
<br>----------- <br>
选中是一个值不选中是另外一个值 <br>
复选框:
<input type="checkbox" v-model="toggle" :true-value="value1" :false-value="value2">
{{toggle}}
<br>被选中:{{toggle == value1}}
<br>不被选中:{{toggle == value2}}
<hr>
下拉框
<select v-model="valueselect" >
<option :value="{num:111}">第一个</option>
<option value="第二个">第二个</option>
<option value="第三个">第三个</option>
</select>----选中: {{valueselect.num}}
<hr>
修饰符:<br>
lazy:
<input type="text" v-model="inputStr"> ---{{inputStr}}
<input type="text" v-model.lazy="lazyStr"> ---{{lazyStr}}
<br>
<br>
number:
<input type="text" v-model.number="isNum"><br>
{{typeof isNum}}
<br>
<br>
trim:
<input type="text" v-model.trim="trimStr"><br>
{{trimStr.split('').length}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
var app = new Vue({
el:'#app',
data:{
value: '',
msg: '',
oneradio: true,
checkName: '第一个',
checks: [],
selected:'',
selectedmul: [],
picked: true,
value: '1',
toggle: true,
value1: '我被选中啦',
value2: '我没被选中',
valueselect: '',
inputStr:'',
lazyStr: '',
isNum:'',
trimStr: ''
}
})
</script>
</body>
</html>