angular $apply()以及$digest()讲解1

一些知名的批评和缺陷。他们都涉及到$digest loop(更新周期)中一个很常见的问题:如何在Angular之外更新$scope?

在哪调用 $apply?

更佳的做法是确保你是在$digest loop之外时调用$apply,比如在"link"指令(directive)响应函数内部使用。

也就是说,只能在$controller之外调用$apply,这样它就可以访问到HTML或其他controller控制器的声明代码 - 比如apply调用link指令并触发相应功能,这时侯是肯定在$digest loop之外的

如何处理AngularJS之外抛出的错误?

$scope.$apply()接收一个函数或Angular表达式字符串,并执行它,然后调用 $scope.$digest()来更新所有绑定或侦听者。

如果你的代码是不是包裹在函数中传递给$apply,它抛出了一个错误,该错误在AngularJS之外抛出,这意味着在你的应用中的错误处理机制无法处理它。$apply不仅仅执行你的代码,它内部的try / catch语句让你的错误总是能被捕捉到,并且$digist是最后的保障,它意为着即使一个错误抛出,它仍能运行。这是相当不错的。

因此,我们应该将表述改为在Angular之外且在$apply之内更新$scope。

总结

希望您现在了解应该何时以及如何使用$apply()。如果你只需要AngularJS为您提供的功能,那您用到它的概率并不高。但是,如果你写自定义指令,并且直接操纵DOM元素,理解它是很有必要的。

时间: 2024-11-10 11:03:41

angular $apply()以及$digest()讲解1的相关文章

angular $apply()以及$digest()讲解

重点的东西放上面,说三遍: 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply()! 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply(). 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply(). $apply()和$digest()在AngularJS中是两个核心概念.为了了解AngularJS的工作方式,首先需要了解

深入理解Angular中的$apply()以及$digest()

reference:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们. 探索$apply()和$digest() AngularJS提供了一个

【转载】$apply()和$digest()

$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们. 探索$apply()和$digest()AngularJS提供了一个非常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性大大简化了我们的代码编写方式.数据绑定意味着当View

理解Angular中的$apply()以及$digest()

$apply()和$digest()在AngularJS中是两个核心概念.可是有时候它们又让人困惑. 而为了了解AngularJS的工作方式,首先须要了解$apply()和$digest()是怎样工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中怎样应用它们. 探索$apply()和$digest() AngularJS提供了一个很酷的特性叫做双向数据绑定(Two-way Data Binding).这个特性大大简化了我们的代码编写方式.数据绑定意味着当Vie

[email protected]理解Angular中的$apply()以及$digest()

$apply() 和 $digest() 在 AngularJS 中是两个核心概念,但是有时候它们又让人困惑.而为了了解 AngularJS 的工作方式,首先需要了解 $apply() 和 $digest() 是如何工作的.这篇文章旨在解释 $apply() 和 $digest() 是什么,以及在日常的编码中如何应用它们. 探索 $apply() 和 $digest() AngularJS 提供了一个非常酷的特性叫做双向数据绑定 (Two-way Data Binding) ,这个特性大大简化了

通俗理解angularjs中的$apply,$digest,$watch

<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>angular时钟辅助理解$apply,$digest,$watch</title> <link rel="stylesheet" href="../bootstrap.

[转]理解$watch ,$apply 和 $digest --- 理解数据绑定过程

原文地址:http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/ 注 这篇博文主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking... 它们是什么?它们是如

理解$watch ,$apply 和 $digest --- 理解数据绑定过程

原文地址:http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/  马着慢慢看 注 这篇博文主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking... 它们是

谈谈Angular关于$watch,$apply 以及 $digest的工作原理

这篇文章主要是面向那些刚开始学AngularJs和想要了解数据绑定(data-binding)是怎么工作的, 如果你已经熟悉如何使用angularjs了,我强烈建议你不用阅读了. angularjs使用者想要知道data-binding是如何工作的,就会遇到很多的关的术语 比如$wacth,$apply,$digest,dirty-checking(脏值检测)...等等,这些又是做什么的呢? 在这篇文章里我会解决所有的疑问,通过结合这些术语在一起来学习. 但是我会尽量用简单的方式来说明. 现在开