vue指令(6)v-model

理论知识

  • 双向数据绑定
    • 数据绑定指数据和变量关联,两者内容一致。
    • 双向即两个方向。
      • 方向一 通过插值表达式,html标签绑定中vue实例对象的data属性中的变量,即获取变量并显示,此时时模型的值向网页输出。
      • 方向二 通过v-model指令,将能够获取用户操作值的网页标签同vue实例对象的data属性中的变量绑定,即修改变量值,此时是修改模型的值。例如,微博输入评论。
      • vue实例对象的data属性的变量是这两个方向的传递者, 用户操作<----v-model--->data变量<-----{{插值表达式}}--->网页内容显示
  • mvvm设计思想
    • 这是一种理论思想,有不同的实现方式。vue是其中的一种。
    • m(model),数据模型,plain javascript object。在vue实例的data属性即是模型的实现。
    • v(view),视图。广泛指dom元素。
    • vm(view-model),数据模型关联视图。在vue中底层通过dom listener和data binding,上层通过v-xx系列指令实现view和model的关联,即双向数据绑定。

dom listener是方向二,data binding是方向一。

  • v-model底层实现原理
    • 通过属性绑定+事件绑定实现v-model的双向数据绑定的功能。属性绑定实现方向一的绑定,事件绑定实现了方向二的绑定。
    • 下面的两行代码效果相同。
<input type="text" v-model='msg'>
<input type="text" v-bind:value='msg' v-on:input='msg=$event.target.value'> 

对于v-on事件绑定,可以直接使用完整的语句块,即等号左右两侧都有内容。
在此处使用event事件需要加'$'.

实践

<!DOCTYPE html>
<html>
<head>
	<script type="text/javascript" src="vue.js"></script>
</head>
<body>
	<div id="app">
		<div >{{ msg}} </div>   //获取变量的值
		<input v-model='msg'>  //获取用户输入数据,还有下拉框、单选框等
	</div>
	<script type="text/javascript">
		var app = new Vue({
			el: '#app',
			data:{
				msg:'123'
			}
		})
	</script>
</body>
</html>

总结

  • 指令的本质是vue作者自定义的网页标签属性。因此他的位置是在标签的左尖括号内部。
原文地址:https://www.cnblogs.com/guojuboke/p/12300989.html