adl*_*adl 21 data-binding angularjs
我当消化周期正在发生的事情很迷茫,是一种基于每50ms定时器它定期调用(因为它说,在这里,并暗示在这里),或者是每一个进入的角度范围内(因为它说,事件发生后呼吁在这里,在这里和这里)?
重要的例子:
在我的模型中,我有一个名为myVar3 的变量.在我的HTML中,我有{{myvar}}.触发按钮单击等事件并在控制器中引发处理程序,处理程序内的代码为:
$scope.myVar = 4;
// some heavy actions takes place for 3 seconds...
$scope.myVar = 5;
Run Code Online (Sandbox Code Playgroud)
假设未阻止UI线程,用户在单击按钮后会看到什么?他会看到5或者他会看到4和3秒后5吗?
Mic*_*mza 25
我认为在http://blog.bguiz.com/post/60397801810/digest-cycles-in-single-page-apps上的摘要周期的描述是
以一定间隔运行的代码
是非常误导,说实话,在提到Angular时,我甚至会说错.引用Pawel Kozlowski,使用AngularJS掌握Web应用程序开发
AngularJS不使用任何类型的轮询机制来定期检查模型更改
要证明没有民意调查,如果你有一个模板
<p>{{state}}</p>
Run Code Online (Sandbox Code Playgroud)
和控制器代码
$scope.state = 'Initial';
// Deliberately *not* using $timeout here
$window.setTimeout(function() {
$scope.state = 'Changed';
},1000);
Run Code Online (Sandbox Code Playgroud)
就像在这个plunker中一样,显示给用户的字符串将保持为Initial并且永远不会改变为Changed.
如果你想知道为什么你经常看到调用$apply,但并非总是如此,这可能是因为Angular附带的各种指令,例如ngClick或ngChange将调用$apply自己,这将触发循环.原生JS事件的事件监听器不会直接执行此操作,因此他们必须故意调用$apply以在模板中反映任何更改.
use*_*687 11
当角度上下文中的任何一个出现时,摘要过程将被启动:
值得注意的是,正常的浏览器相关DOM事件(onclick等)和setTimeout不会触发摘要过程,因为它们在"Angular Context"之外工作.
以上是从这里提供的非常深入的教程快速快照:https: //www.youtube.com/watch?v = SYuc1oSjhgY
| 归档时间: |
|
| 查看次数: |
13765 次 |
| 最近记录: |