Angularjs[6] - $scrope 中 $apply 方法:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angularjs[6] - $scrope 中 $apply 方法:相关的知识,希望对你有一定的参考价值。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </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>
var firstController = function ($scope) { //$scope 作用域 //申明一个model $scope.date = new Date();
// setInterval(function () { // //这里虽然变化,但是没有触发 脏检查 // $scope.date = new Date(); // },1000) setInterval(function () { $scope.$apply(function () { $scope.date = new Date(); }) },1000) };
- 脏检查:将原对象复制一份快照,在某个时间,比较现在对象与快照的值,如果不一样就表明发生变化。
- Angular 通过脏检查得知变量是否发上变化。
Angular 脏检查 策略:
- 不会脏检查所有的对象,当对象被绑定到html中,这个对象添加为检查对象(wetcher)。
- 不会脏检查所有的属性,同样当属性被绑定后,这个属性会被列为检查的属性。
Angular程序初始化时,会将绑定的对象的属性添加为监听对象(watcher),也就是说一个对象绑定了N个属性,就会添加N个 watcher。
- 手动触发脏检查:$apply 进入 angular context,然后通过 $digest 去触发脏检查,推荐给 $apply 参数,否则会检查该 $scope 里所有监听的属性。
- 不建议直接调用 $digest() 属性,而应使用 $apply()。
以上是关于Angularjs[6] - $scrope 中 $apply 方法:的主要内容,如果未能解决你的问题,请参考以下文章
ngAnimate 在 AngularJS 1.6.4 中停止工作
为啥不推荐使用 AngularJS $http 成功/错误方法?从 v1.6 中删除?
为啥不推荐使用 AngularJS $http 成功/错误方法?从 v1.6 中删除?