angularjs – $apply vs $digest在指令测试

前端之家收集整理的这篇文章主要介绍了angularjs – $apply vs $digest在指令测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个指令响应范围上的特定属性的状态,并且我想在我的测试中更改该属性,并验证它的响应正确,这是最好的方式做这种更改?

我看到了这两种模式:

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

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

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

范围。$ digest()将触发当前作用域上的观察者,以及它所有的孩子。 $ apply将评估传递的函数并运行$ rootScope。$ digest()。

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

当一个错误发生在一个观察者和你使用范围$ digest,它不是通过$ exceptionHandler服务处理,所以你需要自己处理异常。 $ apply在内部使用一个try-catch块,并将所有异常传递给$ exceptionHandler。

猜你在找的Angularjs相关文章