首页 > 代码库 > Angularjs[6] - $scrope 中 $apply 方法:
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 方法:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。