vue中的双向数据绑定以及其实现基本原理

1. 什么是双向数据绑定

在vue中,我们使用v-model=‘msg’ ,msg定义在数据属性data中,以此来实现双向数据绑定。在vue中,我们使用数据驱动视图,即data=>view,但使用v-model后,视图层更新后的msg可以再传给data,即view=>data,这个时候更新后的data又能驱动其它视图,即data=>view_other。总的来说,数据流的走向是data=>view=>data=>view_other。可见数据的走向是双向的,因此v-model实现了双向数据绑定的功能。需要特别注意的是,v-model只能在包含value属性的标签中使用。

2. v-model的简单实现

v-model的实现主要基于v-bind:value以及v-on:input两个指令。具体实现见如下代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="uft-8">
		<title>Vue的双向绑定</title>
	</head>
	<body>
		<div id="app">
			<!-- 即使用v-bind:value对Input的value属性进行绑定
			若是手动修改input中的值,p中的内容并不会随之变化,因为View中的值没法修改到data中去
		-->
			<div class='div1'>
				<input type="text" :value="msg1">   
				<p>{{msg1}}</p>
			</div>
			
			<!-- v-model的使用则可以实现双向的绑定,首先data数据渲染到view层,再是view层的修改渲染到data层,因此最新的data数据又使得新的view发生改变,但是v-model实现双向绑定只能在标签包含Value属性的情况下才能实现
		-->
			<div class='div2'>
				<input type="text" v-model="msg2">
				<p>{{msg2}}</p>
			</div>
			
			<!-- v-model的具体实现是依靠v-bind:value=""以及v-on:input=""来实现的,input事件调用的方法会将view中最新的内容赋值给Vue对象中的数据属性,因此整个view中使用了该数据属性的标签对应的内容也发生了改变
		-->
			<div class='div3'>
				<input type="text" :value="msg3" @input="changeHandler">
				<p>{{msg3}}</p>
			</div>
		</div>
		<script type="text/javascript" src="node_modules/vue/dist/vue.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el: "#app",
				data:function() {
					return {
						msg1:"张三",
						msg2:"李四",
						msg3:"王五"
					}
				}, 
				methods:{
					changeHandler:function(e) {
						this.msg3 = e.target.value  //e.target指向的是input元素,this指向的是实例化后的Vue
					}	
				},
			}) 
		</script>
	</body>
</html>

以上代码对应的页面结果如下,'xx’为手动输入页面输入框中的内容,可见v-bind:value和v-on:input的配合使用与v-model实现的效果一致,都成功让data中的数据得到更新,更新后的data再重新驱动页面,最终得出以下效果
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值