我有两个指令。每个指令中的链接都有一个异步函数,如$http
或ngResource
。我想单击按钮A以通过指令A从后端获取数据,然后更改指令B及其视图中的数据。
我尝试使用$boastcast
的数据服务,因为大多数人都会在指令A和B之间共享数据,并使用$apply
来更新视图。但我经常得到inprog错误。那么解决它的最佳方法是什么?
答案 0 :(得分:0)
当你运行$scope.$apply
时,这个错误就会发生。当您尝试手动运行已经运行的摘要循环时,将发生此异常
因此,在使用之前检查摘要是否正在运行
if(!$scope.$$phase) {
$scope.$apply()
}
答案 1 :(得分:0)
不要使用$ apply包装代码,而是尝试注入$ timeout并使用$ timeout包装代码。它将以安全的方式运行摘要循环,仅在循环未运行时才会运行。