<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="AngularJS的View-Model双向绑定 - $digest()和$apply()的区别 - jQuery里触发双向绑定" id="card1">
<p> 游客</p><p>
标题:AngularJS的View-Model双向绑定 - $digest()和$apply()的区别 - jQuery里触发双向绑定<br/>
正文:<br/>
AngularJS是通过该什么来触发绑定的，怎么触发？下边的三个概念需要知道：Dirty Checking – AngularJS内部比较value现在的值和之前的值，如果发生了改变，就触发change事件。Digest – 执行Dirty Checking的机制，由$digest()触发。Apply – 当dom事件在AngularJS机制外被触发时，需要通知AngularJS进行Digest。由$apply()触发。$digest()Digest就像AngularJS的心跳一样~ <br/>它每50ms蹦一次，蹦的时候会触发所属的scope和其所有子scope的dirty checking，dirty checking又会触发$watch()（马上会介绍$watch()），整个Angular双向绑定机制就活了起来~（有人可能会问了，蹦的这么频繁，性能体验神马的都没问题么？一会儿咱专门聊这个哈~） 注意：不建议直接调用$scope.$digest()，而应该使用$scope.$apply()，原因一会儿细说~$watch()每个成功的digest背后都有一群好watch~在digest执行时，如果watch观察的value与上次执行时不一样时，就会被触发AngularJS内部的watch实现了页面随model的及时更新也可手动调用~ <br/>参数1：待观察的value <br/>参数2：value改变时想执行的操作，两个参数分别是改变前后的值 <br/>参数3：默认是false，使用的是JavaScript本身提供的比较方式，true表示比较的是真实的值，会有这个区别是由于JavaScript里对对象的比较是比较的引用地址，所以如果watch的是一个对象类型的数据，即使重新赋值了相同的内容，也会触发change事件，比如watch的变量对应的值是一个数组[1, 2]，如果再次给这个变量赋值[1, 2]，是会触发watch里面的参数2函数的，而大部分时候，对于相同的内容，我们不希望执行watch里的操作，所以可以把第三个参数设置成true，这个时候就会调用angular.equals来进行比较，angular.equals是会比较对象里每一个属性的值是否一样的。当然，如果watch的是五种基本类<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1692&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1692&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1692&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1692&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1692&amp;Page=3">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1692">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1692">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>