AngularJs学习笔记(3)--$scope中的$apply和$digest方法
来源:互联网 发布:双立人珐琅铸铁锅 知乎 编辑:程序博客网 时间:2024/05/20 03:46
http://xlows.blog.51cto.com/5380484/1425325
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<
html
>
<
head
>
<
meta
charset
=
"utf-8"
>
</
head
>
<
body
>
<
div
ng-app
=
""
>
<
div
ng-controller
=
"firstController"
>
{{date}}
</
div
>
</
div
>
<
script
type
=
"text/javascript"
src
=
"app/index.js"
></
script
>
<
script
type
=
"text/javascript"
src
=
"../../vendor/angular/angularjs.js"
></
script
>
</
body
>
</
html
>
1
2
3
4
5
var
firstController =
function
($scope){
$scope.date =
new
Date();
}
1
2
3
4
5
6
7
8
9
10
var
firstController =
function
($scope){
$scope.date =
new
Date();
setInterval(
function
(){
$scope.date =
new
Date();
},1000)
}
能通过固定的接口才能改变变量的值,比如说只能通过set()设置变量的值,set被调用时比较一下就知道了。这种方法的缺点是写法繁琐。
脏检查,将原对象复制一份快照,在某个时间,比较现在对象与快照的值,如果不一样就表明发生变化,这个策略要保留两份变量,而且要遍历对象,比较每个属性,这样会有一定性能问题。
不会脏检查所有的对象,当对象被绑定到html中,这个对象添加为检查对象(watcher)。
不会脏检查所有的属性,同样当属性被绑定后,这个属性会被列为检查的属性。
在angular程序初始化时,会将绑定的对象的属性添加为监听对象(watcher),也就是说一个对象绑定了N个属性,就会添加N个watcher。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
firstController =
function
($scope){
$scope.date =
new
Date();
setInterval(
function
(){
$scope.$apply(
function
(){
$scope.date =
new
Date();
//....会去触发脏检查
})
},1000)
// 触发一次脏检查
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$apply:
function
(expr) {
try
{
beginPhase(
'$apply'
);
return
this
.$eval(expr);
}
catch
(e) {
$exceptionHandler(e);
} finally {
clearPhase();
try
{
$rootScope.$digest();
}
catch
(e) {
$exceptionHandler(e);
throw
e;
}
}
}
0 0
- AngularJs学习笔记(3)--$scope中的$apply和$digest方法
- angularJS<五、$scope中的$apply和$digest>
- [AngularJS面面观] 4. scope中的$apply方法 - Digest Cycle的触发者
- angularJS--apply() 、digest()和watch()方法
- AngularJS学习之$digest循环和$apply
- AngularJS中$digest和$apply
- $scope里的$apply、$digest方法
- 浅析AngularJS中的$scope.$apply
- angularjs $scope.$apply 方法详解
- Angularjs $scope 里面的$apply方法 和 $watch方法
- Angularjs $scope 里面的$apply 方法 和 $watch 方法
- angular中$scope.$apply和$scope.$digest的区别
- AngularJS的digest循环和$apply
- 理解AngularJs的$apply()和$digest()
- [AngularJs问题] $digest $apply
- [AngularJS面面观] 3. scope中的Dirty Checking(脏数据检查) --- Digest Cycle中的优化和细节
- AngularJs学习笔记--Scope
- AngularJs学习笔记--Scope
- SpringMVC学习(5): RequestParam 注解
- c++类型转换
- C++顺序性容器、关联性容器与容器适配器
- Captcha Cracker(BNUOJ 同步赛)
- APP开发实战166-全屏模式的功能设计
- AngularJs学习笔记(3)--$scope中的$apply和$digest方法
- 网络接口层
- HTML中播放声音的方法汇总
- ubuntu下编写并运行第一个c语言程序
- LintCode 爬楼梯[转载]
- Python Windows文件操作
- Service之简单使用
- AngularJs学习笔记(4)--$scope里的$watch方法
- Pycharm-2017.1 Activation code最新可用激活码