数据绑定三种方法的简要介绍

实现数据绑定的做法大致分为:1,开发者 - 订阅者模式     2.脏值检查      3.数据劫持

Angular双向数据绑定的原理是数据脏检测: 1.添加监听器$ watcher 2.数据改变时调用所有watcher中    

界面到数据的更改,是由UI事件,ajax请求,或者超时等回调操作,而数据到界面的呈现则是由脏检查来做。

Angular在范围模型上设置了一个监听队列,用来监听数据变化并更新视图。每次绑定一个东西到查看上时AngularJS就会往$ watch队列里插入一条$ watch,用来检测它监视的模型里是否有变化的东西。在指定事件【注】触发后,进入$ digest循环,$ digest循环就会触发,遍历所有的$ watch,最后更新dom。
注:比如输入,点击,XHR响应事件($ http),执行$ digest()或$ apply(),定时器事件($ timeout。$ interval),浏览器位置变更事件($ location)。

当视图中有任何数据变化时,会更新到模型,当模型发生变化,会检测所有视图是否绑定了相关数据,再更改视图。

Vue采用数据劫持结合发布者 - 订阅者模式,是点对点的绑定数据:  Vue的数据里的每个属性都有set和get方法。通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

new Vue()初始化过程中主要执行两个步骤:编译和链接。

编译过程中,对于给定的目标元素进行解析,识别出所有绑定在元素(通过el属性传入)上的指令。
链接过程中,建立这些指令与对数据(通过数据属性传入初始值)的绑定关系,并以数据的初始值进行渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值