这是正常现象吗? http://plnkr.co/edit/P1TsiIJbV3MvAjHuJRmF?p=preview-集合和ranTime中的两项被调用20次或更多次。
最佳答案
实际上,它正好运行10次,然后使用Error: 10 $digest() iterations reached. Aborting!
中止(打开控制台以查看错误)。
这是预期的行为,因为AngularJS会继续对模型进行脏检查,以找出何时/应重新绘制DOM的哪一部分。我不想在这里重复Misko的出色解释(因此请务必查看这篇文章:https://stackoverflow.com/a/9693933/1418796),但总之,由于移动部件相互依赖,因此您无法获得稳定的模型。
要查看run()
方法调用的真实数量,您可以稍稍修改您的plunker并在控制台上输出结果:http://plnkr.co/edit/fYvguOiM2Y2ocOk02yEN?p=preview如您所见,该函数总共运行4次(每项2次),这恰好是说明工作中的脏检查。
我知道您最初的打unk者的结果可能令人惊讶,但这只是说明AngularJS机器是如何工作的。尽管它在大多数情况下确实可以实现我们想要的功能,但我们需要了解它在某些极端情况下的内部工作方式。