angular的$watch是如何实现的?

上面的图是$watch的实现,里面我观察到,如果调用$watch监听,只是在 scope.$$watchers队列 里面添加监听器watcher,并没有循环或者定时器去检测值的变化, 那如下面的代码是怎样的流程来实现的呢? 刚写完,细心一想,是因为$apply里面再调用$digest进行检测吗? 然而,再看回$watch的代码,如果参数listener不为function,则为noop,那这个noop又是什么呢?
关注者
106
被浏览
2766

6 个回答

`$scope.$apply ` 的时候,会执行你传给它的函数,并且执行 $rootScope 的 $digest

noop 就是 function(){}, 一个空的函数表达式

如果你想了解更多关于 scope 的原理 , 可以看看 @徐飞 翻译的 《build you own angularjs》 第一章 Make-Your-Own-AngularJS/01.md at master · xufei/Make-Your-Own-AngularJS · GitHub
为什么?