加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 09:10:08 所属栏目:安全 来源:网络整理
导读:如果我有一个指令响应范围上的特定属性的状态,并且我想在我的测试中更改该属性,并验证它的响应正确,这是最好的方式做这种更改? 我看到了这两种模式: scope.$apply(function() { scope.myAttribute = true;}); 和 scope.myAttribute = true;scope.$diges
如果我有一个指令响应范围上的特定属性的状态,并且我想在我的测试中更改该属性,并验证它的响应正确,这是最好的方式做这种更改?

我看到了这两种模式:

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读