我在流星应用中的某些地方遇到了此错误。我尝试在$ timeout内将$ apply调用包装在我的应用程序中,但这没有用。我怀疑这与我的角度控制器中的Tracker.autorun()调用有关。 Tracker.autorun()是否遵循与Angular相同的摘要并应用周期?是多次调用函数的原因,一次又一次渲染视图页面,这会导致$ digest错误。
Tracker.autorun(() => {
Multiple function calls here
})
来自文档:
错误:$ rootScope:inprog操作已在进行中
诊断此错误
当您收到此错误时,诊断问题原因可能相当艰巨。最好的措施是从错误中调查堆栈跟踪。您需要查找已调用[C0]或
$apply
的位置,并且查找发生此情况的上下文。应该有两个电话:
第一个调用是良好的
$digest
/$apply
,通常会被调用堆栈顶部附近的某些事件触发。第二个呼叫是错误的
$digest
/$apply
,这是要调查的那个。一旦确定了此呼叫,就可以逐步解决问题,并找出问题所在。
如果在您的应用程序代码中进行了第二次调用,那么您应该查看为什么从
$digest
/$apply
中调用此代码的原因。这可能是一个简单的疏忽,或者可能与前面描述的同步/异步情况相适应。如果第二个调用是在AngularJS指令内进行的,则很可能与前面描述的第二个编程事件触发方案相匹配。在这种情况下,您可能需要进一步查看树,以首先找到触发事件的原因。
有关更多信息,请参阅
$digest