Agular $watch机制
2016-07-27 本文已影响54人
前端大魔王
直接上代码:
$scope.num = 2;
$scope.$watch('num', function () {
console.log(arguments);
console.log('change');
})
$scope.num = 3;
$timeout(function () { $scope.num = 4;})
运行结果
运行结果
结论
- $watch会在$scope逻辑处理完后进行脏值检测(第一次输出的是3)
- 脏值检测总会运行一次,如第一次输出的oldValue与newValue都是3
- 通过$timeout,在下一次脏值检测发生前设置了num所以生效了。