$watch $apply and $evalAsync vs $timeout
$watch
$scope对象上的$watch方法会给Angular事件循环内的每个$digest调用装配一个脏值检查。
如果在表达式上检测到变化, Angular总是会返回$digest循环。
$watch函数本身接受两个必要参数和一个可选的参数:
watchExpression
watchExpression可以是一个作用域对象的属性,或者是一个函数。在$digest循环中的每
个$digest调用都会涉及它。
如果watchExpression是一个字符串, Angular会在$scope上下文中对它求值。如果它是一个
函数,那么Angular会认为它会返回应该被监控的值。
listener/callback
作为回调的监听器函数,它只会在watchExpression的当前值与先前值不相等(除了首次运
行初始化期间)时调用。
objectEquality(可选)
objectEquality是一个进行比较的布尔值,用来告诉Angular是否检查严格相等。
$watch函数会给监听器返回一个注销函数,我们可以调用这个注销函数来取消Angular对当
前值的监控。


$evalAsync vs $timeout
http://stackoverflow.com/questions/17301572/angularjs-evalasync-vs-timeout
To summarize:
if code is queued using $evalAsync from a directive, it should run after the DOM has been manipulated by Angular, but before the browser renders
if code is queued using $evalAsync from a controller, it should run before the DOM has been manipulated by Angular (and before the browser renders) -- rarely do you want this
if code is queued using $timeout, it should run after the DOM has been manipulated by Angular, and after the browser renders (which may cause flicker in some cases)
$apply
http://blog.csdn.net/dm_vincent/article/details/38705099
如果你在AngularJS上下文之外的任何地方修改了model,那么你就需要通过手动调用$apply()来通知AngularJS。这就像告诉AngularJS,你修改了一些models,希望AngularJS帮你触发watchers来做出正确的响应。
随机推荐
- Material Design兼容包的使用
为了方便自己以后的查找,于是就写了这个博客,废话就不多说,开始干: 导入: compile 'com.android.support:appcompat-v7:24.2.1' compile 'com ...
- JS定义数组,初始化
定义一维数组 方法1: var _TheArray = new Array);/定义 _TheArray[0]="1"; _TheArray[1]="2"; _ ...
- 命名困惑系列之一:关于state和status的粗浅研究
牛津高阶词汇的解释 state: CONDITION OF SB/STH 状态:the mental,emotional or physical condition that a person or ...
- 使用系统自带的GCD的timer倒计时模板语句遇到的小坑。。
今天折腾了下系统gcd的 但是如果不调用这句dispatch_source_cancel()那么这个timer根本不工作....解决方法如下: 实现一个倒计时用自带的gcd如此简洁.. 原因可能是如果 ...
- 前端面试那些坑之HTML篇
HTML 1.Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html> 标签之前.告知浏览器的解析 ...
- JavaIO 将数据写入到文件中去
package com.Practice_FileWriter; import java.io.FileWriter; import java.io.IOException; public class ...
- day3 Linux基础
1.正文处理命令及tar命令 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >1.txt2) 将用户信 ...
- Xamarin的不归路-安卓模拟器启动慢&没有虚拟键盘
1.启动慢解决方案:参考这篇文章进行配置 http://www.360doc.com/content/13/1002/18/532901_318605525.shtml 2.模拟器没有虚拟键盘解决方案 ...
- 使用epel源安装软件
问题:centos提供的官方base源可能无法提供某些软件的安装,可以通过epel源 系统:centos6.5 x86_64 解决:安装epel源 #wget http://dl.fedoraproj ...
- SQL Server 2012安装图文教程
解析SQL Server 2012安装中心 当系统打开"SQL Server安装中心",则说明我们可以开始正常的安装SQL Server 2012了. SQL Server安装中心 ...