gpt4 book ai didi

angularjs - 指令测试中的 $apply 与 $digest

转载 作者:行者123 更新时间:2023-12-03 04:53:06 25 4
gpt4 key购买 nike

如果我有一个指令响应范围内特定属性的状态,并且我想在测试中更改该属性并验证它是否正确响应,那么执行该更改的最佳方法是什么?

我见过这两种模式:

scope.$apply(function() {
scope.myAttribute = true;
});

scope.myAttribute = true;
scope.$digest();

它们之间有什么区别,哪个更好,为什么?

最佳答案

scope.$digest() 将在当前作用域及其所有子作用域上触发观察者。 scope.$apply 将评估传递的函数并运行 $rootScope.$digest()

第一个更快,因为它需要评估当前范围及其子范围的观察者。第二个较慢,因为它需要评估 $rootScope 及其所有子作用域的观察者。

当其中一个观察者发生错误并且您使用scope.$digest时,它不会通过$exceptionHandler服务进行处理,因此您需要自己处理异常。 scope.$apply 在内部使用 try-catch block ,并将所有异常传递给 $exceptionHandler

关于angularjs - 指令测试中的 $apply 与 $digest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18697745/

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