gpt4 book ai didi

angularjs - Angular $scope.$digest 与 $scope.$apply

转载 作者:行者123 更新时间:2023-12-04 02:30:51 27 4
gpt4 key购买 nike

我只想知道怎么用$digest .在 Controller 内部,以下代码可以正常工作,并且会在 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()将要求您自己处理异常。

关于angularjs - Angular $scope.$digest 与 $scope.$apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com