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元素,理解它是很有必要的。
angular $apply()以及$digest()讲解1的更多相关文章
- angular $apply()以及$digest()讲解
重点的东西放上面,说三遍: 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply()! 记住的最重要的是ng是否能检测到你对于model的修改. ...
- $apply()和$digest()——angular
$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的 ...
- 理解Angular中的$apply()以及$digest()
$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的 ...
- 深入理解Angular中的$Apply()以及$Digest()
$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的 ...
- 通俗理解angularjs中的$apply,$digest,$watch
<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...
- --@angularjs--理解Angular中的$apply()以及$digest()
$apply() 和 $digest() 在 AngularJS 中是两个核心概念,但是有时候它们又让人困惑.而为了了解 AngularJS 的工作方式,首先需要了解 $apply() 和 $dige ...
- (网页)理解Angular中的$apply()以及$digest()
转自CSDN: 工作有问题上CSDN上转转. $apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$ ...
- (转) 理解Angular中的$apply()以及$digest()
原文地址:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但 ...
- 理解$watch ,$apply 和 $digest --- 理解数据绑定过程
原文地址:http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/ 注 这篇博文主要是写给新手的,是给那些刚刚开始 ...
随机推荐
- 对CSS中的Position属性的一些深入探讨
转:http://www.cnblogs.com/coffeedeveloper/p/3145790.html Position属性 Position的属性值共有四个static.relative.a ...
- StringIO 模块用于在内存缓冲区中读写数据
模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分函数都与对文件的操作方法类似. 例: #coding=gbk import StringIO s=StringIO ...
- java生成验证码图片
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...
- Python中在脚本中引用其他文件函数的方法
在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和 ...
- 证书 pki
对称加密 symmetric cryptographic 非对称加密 asymmetric cryptographic 密钥交换协议 key agreement/exchang ...
- 处理日期时间NSDate
获取当前日期时间的代码如下: NSDate *dateToDay = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] ini ...
- flexpaper源码的编译,去除logo和打印 (转)
1.首先下载FlexPaper的源码.下载地址 2. 下载Adobe Flash Builder v4.5 现在最新是4.6了,在adobe网站木找到4.5下载,这里提供下4.5的种子文件 http: ...
- jstatd命令
jstatd [options] 此命令是一个RMI Server应用程序,提供了对JVM的创建和结束监视,也为远程监视工具提供了一个可以attach的接口options -nr 当一个存在的RMI ...
- [Java] 字符流 Writer,输出字符数据PrintWriter
package test.stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fi ...
- spring错误<context:property-placeholder>:Could not resolve placeholder XXX in string value XXX
spring同时集成redis和mongodb时遇到多个资源文件加载的问题 这两天平台中集成redis和mongodb遇到一个问题 单独集成redis和单独集成mongodb时都可以正常启动程序,但是 ...