加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS:当调用$ scope时,防止错误$ digest已经在进行$ apply

发布时间:2020-12-17 09:37:26 所属栏目:安全 来源:网络整理
导读:我发现我需要更新我的页面到我的范围手动越来越多,因为建立一个应用程序在角。 我知道这样做的唯一方法是从我的控制器和指令的范围调用$ apply()。这个问题是它不断地向控制台抛出一个错误: Error: $digest already in progress 有谁知道如何避免这个错误
我发现我需要更新我的页面到我的范围手动越来越多,因为建立一个应用程序在角。

我知道这样做的唯一方法是从我的控制器和指令的范围调用$ apply()。这个问题是它不断地向控制台抛出一个错误:

Error: $digest already in progress

有谁知道如何避免这个错误或实现相同的事情,但不同的方式?

Don’t use this pattern – This will end up causing more errors than it solves. Even though you think it fixed something,it didn’t.

您可以通过检查$ scope。$$阶段来检查$ digest是否已在进行中。

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

$ scope。如果$ digest或$ apply正在进行,$$阶段将返回“$ digest”或“$ apply”。我相信这些状态的区别是,$ digest将处理当前范围及其子节点的监视,$ apply将处理所有范围的监视器。

To @ dnc253的观点,如果你发现自己常常调用$ digest或$ apply,你可能会做错了。我通常发现我需要消化,当我需要更新作用域的状态作为一个DOM事件触发以外的Angular的结果。例如,当twitter启动模式隐藏时。有时,DOM事件在$ digest正在进行时触发,有时不会触发。这就是为什么我使用这个检查。

我想知道一个更好的方式,如果有人知道一个。

来自评论:
作者:@anddoutoi

angular.js Anti Patterns

  1. Don’t do if (!$scope.$$phase) $scope.$apply(),it means your $scope.$apply() isn’t high enough in the call stack.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读