—— 学习是自己的事情,需要自己重视 ——
关注我,让我们一起进步…
v-model
表单控件中元素与数据双向关联
1.输入框与数据双向绑定
在输入框内代码中添加
v-model=‘msg’
,那么,输入框中的value值就会自动绑定msg
的值。当在页面中修改输入框的值的时候,则会自动相应vm中的msg
的值。当修改msg
的值的时候,也会自动修改页面中输入框的value
值
2.多行文本框与数据的双向绑定
多行文本框跟输入框的使用方法也是类似的,都是使用
v-mode=‘msg’
完成两者之间的关联绑定。当修改vue实例中的msg
的值的时候,就会自动修改视图中输入框内的value
值。同样的,当视图中多行文本框的value
值改变的时候,也会相应地改变vue实例中地msg
的值。
注意:多行文本框会涉及到换行符,多行文本框内多个换行符,在视图中都只会识别成一个空格键。
3.复选框与数据的双向绑定
在复选框代码中,添加代码
v-model=“toggle”
就可以将复选框中的值跟vue实例中的msg
数据关联起来。但是,由于现在checkbox只有一个空值,可以理解为只有一种选择,因此,当我们选中一个选项的时候,全都会被选中,取消一个的时候,也全部会取消。
解决方案
解决方案:需要在每一个选项中添加自己的value
值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>选择你喜欢的水果</p>
<input type="checkbox" id="checkbox1" value='苹果' v-model="toggle" />
<label for="checkbox1">苹果</label>
<input type="checkbox" id="checkbox1" value='香蕉' v-model="toggle" />
<label for="checkbox1">香蕉</label>
<input type="checkbox" id="checkbox1" value='李子' v-model="toggle" />
<label for="checkbox1">李子</label>
<input type="checkbox" id="checkbox1" value='桃子' v-model="toggle" />
<label for="checkbox1">桃子</label>
<hr>
你选择的是 {{toggle}}
</div>
<script type="text/javascript">
let vm=new Vue({
el:'#app',
data:{
toggle:[]
},
});
</script>
</body>
</html>
原理:一开始的时候,toggle是没有数据的,而每个选项中的value值也仅仅存放在每个标签上。因此,
toggle
一开始的值是空值,当我们点击每一项的时候,checkbox
具体value
值就会添加到toggle
上了。
4.单选框与数据的双向绑定
单选框的使用方法与复选框使用方法差不多,只不过把
type=‘checkbox’
改为type=‘radio’
就可以了。
5.下拉列表框与数据的双向绑定
在
select
开始标签内添加v-model='toggle’
这句代码就可以完成下拉列表框与数据的双向绑定了。
注意:不是给每一项的option
添加
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>选择你喜欢的水果</p>
<select v-model="toggle">
<option value="苹果">苹果</option>
<option value="李子">李子</option>
<option value="桃子">桃子</option>
<option value="香蕉">香蕉</option>
</select>
<hr>
你选择的是 {{toggle}}
</div>
<script type="text/javascript">
let vm=new Vue({
el:'#app',
data:{
toggle:""
},
});
</script>
</body>
</html>
v-model.lazy
当我们实现了输入框跟数据的双向绑定的时候,可以发现,当我们在输入框内输入数据的时候,会出现实时更新的效果,实际上,这是触发了输入框的
input
事件。
如果,我们想实现另外一种效果,就是当我们按下回车键或者是失去焦点的时候,才更新最后的数据,提高页面性能,这时,我们可以在v-model
后面添加.lazy
.
v-model.number
使用
v-model
绑定表单的数据,就算将表单的type
属性更改为
number
,最终获取到数据也还是string类型的。如下图
.number
可以帮助我们把能被解析的数据转换为number
类型,不能识别的为string
类型。
v-model.trim
当用户在输入框内输入内容的时候,有时候会多输入一些空格,那么,这时候,我们需要去掉用户多余的空格。这时,我们就可以在
v-mode
的后面添加上.trim
去掉前后多余的空格。