我有这个功能:
function scopeMutateSuccess(modalInstance, state) {
$rootScope.$apply(function() {
modalEventConfig.statusType = 'success';
modalEventConfig.nodeStatus = 'Completed Successfully';
});
}
在调用堆栈中......在此函数之前调用digest()
。但是,在调用此函数时它仍在运行,我得到一个摘要()正在进行中。我在此函数中需要自己的digest()
,否则视图不会使用作用域成员值进行更新。第一个digest()
在其他地方被调用,而不是我,所以我无法控制它。
是否有digest()
结束时的事件监听器或阻止他们发生冲突的方法?
答案 0 :(得分:2)
您始终可以使用$scope.$$phase
检查正在进行的摘要(如果正在进行中,则返回true)。
然而,这里最简单的解决方法似乎只是将inside函数包装成$ timeout回调(它会处理正在进行的问题),如下所示:
function scopeMutateSuccess(modalInstance, state) {
$timeout(function() {
modalEventConfig.statusType = 'success';
modalEventConfig.nodeStatus = 'Completed Successfully';
}, 0);
}
当然,请确保注入$ timeout依赖项。