角$ scope。$ digest vs $ scope。$ apply

未知的开发人员

我只想知道火热的使用方法$digest在控制器内部,以下代码可以正常工作,并且在3秒后更新DOM:

setTimeout(function(){
    $scope.$apply(function(){
    $scope.name = 'Alice';
    });
},3000);

但是通过使用

setTimeout(function(){
        $scope.$digest(function(){
        $scope.name = 'Alice';
        });
    },3000);

没发生什么事...

我以为他们做同样的事情。我怎么了?

路易斯·佩雷斯

$apply()$digest()有一些异同。它们的相似之处在于它们都检查了更改内容并更新了UI并触发了所有观察程序。

两者之间的区别是它们的调用方式。$digest()被调用而没有任何参数。$apply()具有在执行任何更新之前将要执行的功能。

另一个区别是它们的影响。$digest()将更新当前范围和任何子范围。$apply()将更新每个范围。因此,大多数时间$digest()将是您想要的,并且效率更高。

解释为什么要$apply()使用功能的最终差异是它们如何处理观察程序中的异常。$apply()会将异常传递给$exceptionHandler(内部使用try-catch块),同时$digest()要求您自己处理异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章