当前位置: 首页 > 面试题库 >

指令测试中的$ apply与$ digest

邵胜涝
2023-03-14
问题内容

如果我有一个指令可以响应示波器上特定属性的状态,并且我想在测试中更改该属性并验证其是否正确响应,那是进行此更改的最佳方法?

我已经看过这两种模式

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

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

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


问题答案:

scope.$digest()会在当前范围及其所有子级上触发监视程序。scope.$apply将评估传递的函数并运行$rootScope.$digest()

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

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



 类似资料:
  • 问题内容: 作为Java程序的JIT编译结果,我得到了以下程序集列表。 我对指令的理解在这里是没有用的,因为测试的主要思想是 标记SF,ZF,PF被修改,而AND的结果被丢弃。 在这里,我们不使用这些结果标志。 是JIT中的错误还是我错过了什么?如果是,最好的报告地点在哪里?谢谢! 问题答案: 那一定是线程本地握手poll。看从哪里读取。如果是从(线程本地存储)偏移量读取的,那就是家伙。在这里查看

  • 我正在尝试在我全新的项目中使用TailWind,每个应用程序都很好,但是@应用程序甚至不能编译。 以下是错误消息: 我的顺风。css文件: 我已经安装了POSTSS cli并使用POSTSS。配置。就像这样: 但这些都不管用。

  • 我正在用一个指令计算html元素的最小高度,当我试图通过scope.$apply()更新父作用域值时,我得到以下错误: 我的指示是: 我总是可以使用更新父作用域值,但在这种情况下,指令的作用域规则将不起作用(例如,如果我想通过“@”隔离作用域,则ctrl仍将接收更新)。 此外,我可以通过设置min-height值,但我希望以角度的方式进行。 问题出在哪里? *使用angular 1.3.5处理任何

  • 问题内容: 因此,我确实看到了另一个问题:如何在指令UT中模拟所需的指令控制器,这基本上是我的问题,但似乎该线程的答案是“更改设计”。我想确保没有办法做到这一点。我有一个指令声明一个由子指令使用的控制器。我现在正尝试为children指令编写茉莉花测试,但由于它们依赖于控制器,因此我无法让它们在测试中进行编译。看起来是这样的: 子指令: 茉莉花测试: 我没有办法用茉莉花测试子指令吗?如果可以,我会

  • 当在汇编指令级别分析代码时,鉴于现代CPU不串行或按顺序执行指令,指令指针的位置真正意味着什么?例如,假设以下x64汇编代码: 指令指针将在哪条指令上花费大部分时间?我可以为他们所有人想出好的理由: mov-RAX,[RBX]可能需要100秒的周期,因为它是缓存未命中

  • 问题内容: 我正在使用Jasmine编写AngularJS的指令测试,并与它们一起使用templateUrl:https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行测试时,我得到了要点中包含的错误: 从我在文档中阅读的内容来看,我认为自己做得正确,但是事实并非如此-我在这里想念的是什么? 谢谢 问题答案: 如果您使用的是ng