AngularJS之$apply,主动通知angularjs刷新视图

angularjs是双向数据绑定,会不断的循环数据模型和视图是否一致,并进行视图和模型的同步。

但是,某些情况下,modle变化了,而view没有更新,通过$apply方法我们可以主动告知angularjs,modle有更新,你应该进行检查是否需要更新视图了。

使用$apply 方法

1
$scope.$apply()
  • $apply 的理解:

    如果你在AngularJS上下文之外的任何地方修改了model,那么你就需要通过手动调用$apply()来通知AngularJS。这就像告诉AngularJS,你修改了一些models,希望AngularJS帮你触发watchers来做出正确的响应。

    比如,如果你使用了JavaScript中的setTimeout()来更新一个scope model,那么AngularJS就没有办法知道你更改了什么。这种情况下,调用$apply()就是你的责任了,通过调用它来触发一轮$digest循环。类似地,如果你有一个指令用来设置一个DOM事件listener并且在该listener中修改了一些models,那么你也需要通过手动调用$apply()来确保变更会被正确的反映到view中。

这篇文章讲解$apply非常透彻 理解Angular中的$apply()以及$digest()


参考文档

each.sinaapp.com/angular/apps/app-timer.html

http://blog.csdn.net/dm_vincent/article/details/38705099