前言
设想一个这样的情况:在前端有一个输入框,一个输出框,当用户在输入框输入数据时,输出框也会显示。
这时,可以用到v-model指令:将前端的输入数据与Vue中的data域中的属性进行绑定。
v-model
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--导入vue的js文件-->
<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<input type="text" placeholder="请输入年龄" v-model="age"><br>
<p>你的年龄是:</p>
<input type="text" v-model="age">
</div>
<script>
let vm = new Vue({
el: "#app",
data: {
age: null
}
});
</script>
</body>
</html>
此时,v-model的作用是 将input中的value属性与data域中的age属性进行绑定,并监听输入事件,一旦前端的value进行改变,data域中的age属性也随之改变。
进阶
现在需求变了:输入框中输入摄氏温度,输出框展示华氏温度(摄氏度华氏度换算公式:摄氏度×9÷5+32=华氏度)
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--导入vue的js文件-->
<script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<input type="text" placeholder="请输入摄氏温度" v-model="tem"><br>
<p>华氏温度:</p>
<input type="text" v-model="changeTem()">
</div>
<script>
let vm = new Vue({
el: "#app",
data: {
age: null,
tem: 0
},
methods: {
changeTem: function(){
if(this.tem) return ((this.tem*9)/5+32);
}
}
});
</script>
</body>
</html>
总结
- v-model 一般应用在表单类(输入类)元素上,例如input、select标签等
- v-model:value可以简写为v-model,因为v-model默认绑定的就是value属性