脏检查
mvvm
mvc
mvvm
m model
v view
vm view-model $scope
双向数据绑定
监听js里面值的变化:写一个循环执行的代码取一段时间去取一下值,看看变了没有
1.房贷计算器 车贷计算器
2.购物车
3.时间\人数
4.贵金属交易 有盘的这种,数据在实时变化的
$watch
使用watch监听scope里面值的变化
AngularJS是如何知道什么时候触发$watch?又如何取触发?
如果你是作者怎么办
找一个函数来循环去检查scope中的数据是否发生了变化,
发现有变化去更改相应的值这个函数就是 —->scope.digest()
当更改了scope里面的值、timeout、$interval等
自动触发一次$digest循环
$digest
digest循环最少也会运行两次,即使在watch的回调函数中并没有改变任何model。
如果watch的回调函数中修改了scope
$digest()最多迭代10次
$apply()
digest是一个内部函数,我们没法调用,即使是AngularJS也并不直接调用digest(),
而是调用scope.apply(),然后scope.apply()调用rootScope.digest()
什么时候需要我们手动调用$apply()方法?
不在AngularJS的控制范围内去修改scope里的值例如interval和setInterval
$digest()的遍历
并从$rootScope开始遍历(深度优先)检查数据变更。