使用js原生方法实现v-model双向数据绑定,vue的双向数据绑定原理

zhuanbike 2022-3-8 759

这里探索一下v-model双向数据绑定的原理。

html部分:

<input type="text"  v-model="title"/>
<h4 v-bind="title">绑定title</h4>
<input type="text" v-model="content"/>
<h4 v-bind="content">绑定content</h4>

js部分:

//双向数据绑定
		function Vue(){
			let proxy=new Proxy(
			{},
			{
				get(obj,property){},
				set(obj,property,value){
					obj[property]=value;
					document.querySelectorAll(
					`[v-model="${property}"],[v-bind="${property}"]`
					).forEach(el=>{
						el.innerHTML=value;
						el.value=value;
					});
				}
				
			});
			//初始化绑定元素事件
			this.run=function(){
				const els =document.querySelectorAll("[v-model]");
				els.forEach(item => {
				      item.addEventListener("keyup", function() {
				        proxy[this.getAttribute("v-model")] = this.value;
				      });
				});
			};
		}
		let vue=new Vue().run();


最新回复 (0)
发新帖