Angular.js Two Digest()Sucessions Clashing

时间:2014-08-24 21:21:59

标签: angularjs

我有这个功能:

function scopeMutateSuccess(modalInstance, state) {
    $rootScope.$apply(function() {
      modalEventConfig.statusType = 'success';
      modalEventConfig.nodeStatus = 'Completed Successfully';
    });
}

在调用堆栈中......在此函数之前调用digest()。但是,在调用此函数时它仍在运行,我得到一个摘要()正在进行中。我在此函数中需要自己的digest(),否则视图不会使用作​​用域成员值进行更新。第一个digest()在其他地方被调用,而不是我,所以我无法控制它。

是否有digest()结束时的事件监听器或阻止他们发生冲突的方法?

1 个答案:

答案 0 :(得分:2)

您始终可以使用$scope.$$phase检查正在进行的摘要(如果正在进行中,则返回true)。

然而,这里最简单的解决方法似乎只是将inside函数包装成$ timeout回调(它会处理正在进行的问题),如下所示:

function scopeMutateSuccess(modalInstance, state) {
    $timeout(function() {
      modalEventConfig.statusType = 'success';
      modalEventConfig.nodeStatus = 'Completed Successfully';
    }, 0);
}

当然,请确保注入$ timeout依赖项。