我只想知道火热的使用方法$digest
。在控制器内,以下代码可以正常工作,并且在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()
将需要您自己处理异常。
描述 (Description) 变量范围指定可用变量的位置。 将从本地范围搜索变量,如果它们不可用,则编译器将从父范围进行搜索。 例子 (Example) 以下示例演示了在LESS文件中使用命名空间和访问器 - <html> <head> <title>Less Scope</title> <link rel = "stylesheet" type = "text/
Target Scope The target scope configuration lets you tell Burp, at a suite-wide level, exactly what hosts and URLs constitute the target for your current work. You can think of the target scope as, ro
Weave Scope - Troubleshooting & Monitoring for Docker & Kubernetes Weave Scope automatically generates a map of your application, enabling you tointuitively understand, monitor, and control your conta
如何使用和方法将对象从一个控制器发送到另一个控制器? 它的工作方式并不像我想的那样。和如何工作?
描述 (Description) 由变量组成的Mixins是可见的,可以在调用者的范围内使用。 但是有一个例外,如果调用者包含一个具有相同名称的变量,那么该变量不会被复制到调用者的作用域中。 只有调用者范围内的变量受到保护,并且重写了继承的变量。 例子 (Example) 以下示例演示了在LESS文件中使用mixin scope - <html> <head> <link rel
任何编程中的范围都是程序的一个区域,其中可以存在已定义的变量,并且不能访问该变量。 有三个地方可以用Go编程语言声明变量 - 在函数或块内( local变量) 所有函数之外( global变量) 在函数参数的定义中( formal参数) 让我们找出什么是local和global变量以及什么是formal参数。 局部变量 (Local Variables) 在函数或块内声明的变量称为局部变量。 它们