一次绑定到Angular中的随机值生成方法

时间:2016-07-28 18:24:11

标签: angularjs

我试图连接一个临时函数进行测试,返回一个随机日期显示在我的视图中。这是因为它陷入循环而抛出错误,所以我认为将其转换为单向绑定会起作用,但问题仍然存在。实际错误是:

[$rootScope:infdig] 10 $digest() iterations reached. Aborting!

当绑定到返回随机值的方法调用时,为什么Angular会陷入无限循环?一旦返回不是undefined的值

,表达式是否应该停止评估

示例plunk

注意:我不是在寻找修复,我已经用一次性生成的随机值替换了函数调用,但我很想知道为什么一次性绑定在继续评估之后模型应该(从我的理解)稳定下来。

1 个答案:

答案 0 :(得分:1)

要了解为什么会发生这种情况,您需要了解摘要周期。

脏检查

Angular基于"脏检查"。 Angular基本上遍历$scope中的所有属性,以查看已更改的内容。如果任何属性发生变化,Angular会激活所有观察者,让他们了解这些变化

由于手表可以更改示波器的属性,因此Angular会在手表完成后运行另一轮脏检查。当迭代遍历所有属性并且它们看不到它们都没有改变时,消化循环停止。

当手表始终为Math.random()

中不断发生的属性设置新值时,会发生无限摘要