AngularJS的核心机制--脏检查

脏检查

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开始遍历(深度优先)检查数据变更。

你可能感兴趣的:(angularJS)