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

【字号: 日期:2024-04-07浏览:51作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决AngularJS:调用$ scope$ apply()时防止错误$ digest已经在进行中?

-最终将导致更多错误,无法解决。即使您认为它可以修复某些问题,也没有。

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

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

$scope.$$phase将返回,'$digest'或者'$apply'如果正在进行$digest或$apply。我认为这些状态之间的区别在于,$digest它将处理当前范围及其子项$apply的监视,并将处理所有范围的监视者。

就@dnc253而言,如果您发现自己打电话$digest或$apply经常打电话,则可能是做错了。通常,由于Angular无法触发DOM事件而需要更新作用域的状态时,我通常需要进行摘要。例如,当一个Twitter引导模态被隐藏时。有时DOM事件在a$digest进行时触发,有时不触发。这就是为什么我使用这张支票。

如果有人知道,我想知道一种更好的方法。

来自评论:@anddoutoi

angular.js反模式

不这样做if (!$scope.$$phase)$scope.$apply(),这意味着您$scope.$apply()在调用堆栈中不够高。解决方法

我发现自从以角度构建应用程序以来,我需要越来越多地手动将页面更新到我的范围。

我唯一知道的方法是$apply()从控制器和指令的范围进行调用。问题是它不断向显示以下内容的控制台抛出错误:

错误:$ digest已经在进行中

有谁知道如何避免这种错误或以不同的方式实现相同的目的?

相关文章: