当前位置: 首页 > 知识库问答 >
问题:

AngularJS:在调用$scope.$apply()时防止错误$digest已在进行

籍利
2023-03-14

有没有人知道如何避免这个错误,或者实现同样的事情,但以不同的方式?

共有1个答案

宣煜
2023-03-14

不要使用这种模式--这将导致比它所解决的更多的错误。即使你认为它修复了一些东西,但它没有。

您可以通过检查$scope.$$phase来检查$digest是否已经在进行中。

if(!$scope.$$phase) {
  //$digest or $apply
}

如果$digest$apply正在进行,则$scope.$$phase将返回“$digest”“$apply”。我相信这些状态的区别在于,$digest将处理当前作用域及其子域的观察者,$apply将处理所有作用域的观察者。

 类似资料:
  • 问题内容: 我发现自从以角度构建应用程序以来,我需要越来越多地手动将页面更新到我的范围。 我唯一知道的方法是从控制器和指令的范围进行调用。问题是它不断向显示以下内容的控制台抛出错误: 错误:$ digest已经在进行中 有谁知道如何避免这种错误或以不同的方式实现相同的目的? 问题答案: 不要使用此模式 -最终将导致更多错误,无法解决。即使您认为它可以修复某些问题,也没有。 您可以通过检查来检查a

  • 问题内容: 我只想知道火热的使用方法。在控制器内,以下代码可以正常工作,并且在3秒后更新DOM: 但是通过使用 没发生什么事… 我以为他们做同样的事情。我怎么了? 问题答案: 并有一些异同。它们的相似之处在于它们都检查了更改内容并更新了UI并触发了所有观察程序。 两者之间的区别是它们的调用方式。被调用而没有任何参数。具有在执行任何更新之前将要执行的功能。 另一个区别是它们的影响。将更新当前范围和任

  • 问题内容: 在AngularJS范围内。在每个事件处理程序(输入指令的keydown / input事件,select指令的change事件等)上调用$ apply()。 看小例子。似乎ngRepeat在每次击键时都会重新计算并重绘,尽管事实是另一个作用域发生了更改。 知道这种决定的理由将是很有趣的。 问题答案: 希望有AngularJS的作者来做,但是我相信$ digest()必须在$ root

  • 问题内容: 尝试致电时出现此错误 错误是 问题答案: 复制: 防止在调用$ scope。$ apply()时发生错误$digest。 您收到的错误表明Angular的脏检查已经在进行中。 最新的最佳实践表明,如果要在下一个 摘要 迭代中执行任何代码,则应使用: 上一页反应: (不要使用此方法) 使用安全的申请,例如: 你为什么不反转条件?

  • 问题内容: 我正在尝试更新$ scope的页面上的一些文本。但我不断收到此错误: 显然我做错了。:)关于如何解决此问题的任何想法?我希望页面更新为作用域中的新变量。 这是我用于更新的代码: HTML: 我还要对每个加载的页面使用ngRoute和单独的控制器,是否与它有关系? 问题答案: 您正在函数内部使用,因此会遇到常见的“已经摘要”错误。您不需要将调用放入$ scope。$ apply(…)块内

  • 问题内容: 我不知道如何使用和。官方文档没有帮助。 我不明白的是: 他们连接到DOM吗? 如何更新对模型的DOM更改? 它们之间的连接点是什么? 我尝试了本教程,但这需要对它的理解并且理所当然。 做什么和做什么,以及如何正确使用它们? 问题答案: 您需要了解AngularJS的工作原理才能理解它。 消化周期和作用域 首先,AngularJS定义了所谓的 摘要循环 的概念。这个周期可以看作是一个循环