v-model的作用是绑定表单元素,实现双向数据绑定。
v-model的本质是语法糖(简化写法)而已,其真正是实现原理是:
v-bind:绑定响应式数据,
触发oninput事件并传递数据。
举个栗子
<!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></title>
</head>
<body>
<div id="app">
用户名:<input type="text" v-model="msg">
<span>{{msg}}</span><hr>
用户名:<input type="text" :value="msg" @input="msg=$event.target.value">
<span>{{msg}}</span><hr>
<!--
自html5开始,input每次输入都会触发oninput事件,所以输入时input的内容会绑定到msg,于是msg的值就会改变
$event 指代当前触发的事件的对象
$event.target 指代当前触发的事件的对象的dom
$event.target.value 就是当前dom的value的值
在:value中,msg=> value
-->
<!-- 调用实例中的方法写法 -->
用户名:<input type="text" :value="msg" @input="fn($event)">
<span>{{msg}}</span><hr>
</div>
</body>
<script src="../js/vue.js"></script>
<script>
new Vue({
el: "#app",
data: {
msg: "Hello Vue!",
},
methods:{
fn(e){
console.log(e);
this.msg = e.target.value;
},
},
});
</script>
</html>