首页天道酬勤vue数据绑定原理,双向绑定的实现原理

vue数据绑定原理,双向绑定的实现原理

张世龙 05-04 02:16 70次浏览

1、页面数据模型层:

原理:向元素添加事件接收完成。例如,向input标签添加input事件以更改value值。 2、数据模型层页面:

原理:数据劫持和订阅数据劫持:拦截数据变化常用方案: Object.defineProperty和Proxy Vue2.0为Object.defineProperty Vue3.0为proxject 数据劫持脚本类型=' text/JavaScript ' varbar object.define property (book, ' name )、{//从外部给name赋值时set : function (value )、name=valueconsole.log )、' set你买了一个//从外部获取name值时get:function () console.log ) ) get你的书来了哦(name ) ) name ) ) book.name=) vue权威指南(/你的书来了。 Vue权威指南book.name='Vue权威指南2 )//set这里是赋值,所以先触发set打印: set你买书Vue权威指南2console.log(book.name,' 22222222222222222222222227 你的书来了。 Vue权威指南2/script打印信息:

订阅示例:虽然刚刚实现了数据劫持,但可以在数据发生更改时刷新页面。

body input type=' ' name=' ' id=' inputa ' value=' '/input type=' ' name=' input b ' value=' '/buttontyty 输入框a、b的数据流可以从页面到数据模型层,通过接收输入框的onInput事件来修改数据。 InputC使用Object.defineProperty的set方法,在分配valueC时,触发器更新代码如下: body input type=' ' name=' id=' inputa ' value=' '/input type=' ' name=' input b ' value=' '/balue butte body script type=' text/JavaScript ' vardata={ valuec 33666 } { this.watchers=[ ] } dingyueqi.prototype.add watcher dinn cher { this.watchers.foreach (item={ item.update (value ) }//观察者构造函数functionwatchers ) target ) this.inppdate /创建观察者varinputc=new watchers (document.getelementbyid (' inputc ' ) /订阅者varmydddid ) )的mydingyue.add watcher (ind 数据劫持)这里是valueC ) object.defineproperty ) data、' valueC '、{set3360function(value ) valuec=valueconsole.log get :功能((returnval uec ) ) varinputa=document.getelementbyid ) inputa ) var input b=document.getelement var bar t监听器) click ),)={ console.log } inputB.value,input b.value

vue实现双向绑定原理,nodejs跟vue的关系