不要使用此模式 -最终将导致更多错误,无法解决。即使您认为它可以修复某些问题,也没有。
您可以
$digest通过检查来检查a 是否已经在进行中
$scope.$$phase。
if(!$scope.$$phase) { //$digest or $apply}
$scope.$$phase将返回,
"$digest"或者
"$apply"如果正在进行
$digest或
$apply。我认为这些状态之间的区别在于,
$digest它将处理当前范围及其子项
$apply的监视,并将处理所有范围的监视者。
就@
dnc253而言,如果您发现自己打电话
$digest或
$apply经常打电话,则可能是做错了。通常,由于Angular无法触发DOM事件而需要更新作用域的状态时,我通常需要进行摘要。例如,当一个Twitter引导模态被隐藏时。有时DOM事件在a
$digest进行时触发,有时不触发。这就是为什么我使用这张支票。
如果有人知道,我想知道一种更好的方法。
来自评论:@anddoutoi
angular.js反模式
- 不这样做
if (!$scope.$$phase)$scope.$apply(),这意味着您$scope.$apply()在调用堆栈中不够高。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)