angular源码解读:$apply方法
来源:互联网 发布:iphone7数据恢复失败 编辑:程序博客网 时间:2024/05/22 12:14
$apply=function(expr) { try { beginPhase('$apply'); try { return this.$eval(expr); } finally { clearPhase(); } } catch (e) { $exceptionHandler(e); } finally { try { $rootScope.$digest(); } catch (e) { $exceptionHandler(e); throw e; } } }
版本:1.5.8 源码位置:17778行左右
- 使用$apply()方法可以手动触发angular的脏检查机制以监测自定数据的变化并使视图即时修改
angular的脏检查机制是由$digest主导的,但使用$apply方法更安全
原因:
如上代码,$apply方法传入表达式expr时,会首先调用$eval()方法来检查传入的表达式是否合法
如果不合法,则通过$exceptionHandler()处理
合法:再触发$digest()循环
优点:更加安全
改进:给apply传入一个函数做为参数以指定检查范围,不传入的话会默认检查全局的数据
官方描述:
@description
*$apply()
is used to execute an expression in angular from outside of the angular
* framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
* Because we are calling into the angular framework we need to perform proper scope life
* cycle of {@link ng.$exceptionHandler exception handling},
0 0
- angular源码解读:$apply方法
- angular源码解读:forEach方法遍历
- angular $apply方法
- Angular源码解读之Render
- Angular源码解读的setupModuleLoader函数
- angular JS之$watch、$digest和$apply方法
- angular 实时更新模板视图的方法$apply
- Angular($digest和$apply)
- URL类方法源码解读
- javascript apply/call解读
- 双向绑定---angular之watch、apply、digest原理深入分析(源码分析)
- 【Angular】理解Angular中的$apply()以及$digest()
- Angular中$scpe的$apply
- Angular中的$apply()以及$digest()
- Angular之$apply和$digest
- Angular之解读过滤器
- 浅谈angular.js中实现双向绑定的方法$watch $digest $apply
- apply方法
- Android手动修改DNS的方法
- 2017年初面向java小白配置mac版jdk的方法
- 我的2016
- 多媒体页面设计
- 用Qt5编译QFtp
- angular源码解读:$apply方法
- Python爬虫讲座初探
- JSP表格页面布局问卷调查
- angular源码解读:forEach方法遍历
- Linux下长时间ping网络加时间戳并记录到文本
- BZOJ3533: [Sdoi2014]向量集
- MAC上安装rocketmq磁盘空间不足的问题
- wikioi1004 四子连棋
- leetcode_middle_2_406. Queue Reconstruction by Height