Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $$阶段似乎没有更新回null_Angularjs_Angularjs Scope - Fatal编程技术网

Angularjs $$阶段似乎没有更新回null

Angularjs $$阶段似乎没有更新回null,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在开发一个企业级Angular应用程序,使用Ruby PageObject进行测试。我们遇到的问题是,有时一个$interval会启动$digest,导致随机故障。我试图编写一个Javscript命令,页面对象可以执行该命令,以查看$digest是否正在运行。为此,我提出了以下建议 angular.element("#application").injector().get('$rootScope').$$phase 这似乎是可行的,但是,我想解决这个问题,然而,这个plunker并没有改

我正在开发一个企业级Angular应用程序,使用Ruby PageObject进行测试。我们遇到的问题是,有时一个$interval会启动$digest,导致随机故障。我试图编写一个Javscript命令,页面对象可以执行该命令,以查看$digest是否正在运行。为此,我提出了以下建议

angular.element("#application").injector().get('$rootScope').$$phase
这似乎是可行的,但是,我想解决这个问题,然而,这个plunker并没有改变$digest。然而,当我添加以下内容时

$timeout(function() {
      console.log("phase is "+$scope.$root.$$phase);
})

我看到它变为null,那么我如何在UI中显示它呢?

AFAIK您可以在UI上显示
$root.$$phase
值,但它将始终仅显示为
$digest
,它将永远不会显示为
null
。因为Angular会为每个
50ms
运行摘要周期来更新所有数据绑定,所以您需要查看。

为什么要在$interval内强制使用$digest?当您知道在角度生命周期之外发生了变化时,您应该只需要执行$apply。另外,所有以
$$
开头的值都是内部值,不应在实时应用程序中使用。在同一阶段中始终会调用监视程序。所以值总是一样的。@Enzey,嗯?超时不是强制摘要,而是等待摘要完成。这就是为什么在超时内阶段为空。至于$$它在测试内部,而不是应用程序本身,测试将获取DOM元素并使用它的注入器来获取$rootScope。这将不包括在决赛中source@zeroflagL所以,我想你已经从技术上回答了我的问题,当我把它移出控制器()时,它似乎像我预期的那样。还有什么我可以从控制器本身来做的吗?@Jackie你是在用黑客的方式添加
area.innerHTML
谢谢你,但情况不是更新数据绑定,而是在出现过时的状态异常时告诉一个单独的(在我们的例子中是ruby测试套件)测试应用程序。另外,既然摘要周期只需要50毫秒,为什么我不看到它变为null,而不是看到它被卡在$apply上呢。请玩转plnkr,尝试导出我所指的内容(基本上,在按钮单击后,它变为null,我希望它在启动后也是这样)。