https://segmentfault.com/q/1010000000738004/a-1020000000738812
$$phase 是 angluar 内部使用的状态标志位,用于标识当前是否处于 digest 状态。
通常程序中不需要关心这个状态(两个 $ 打头更说明它是内部使用的),如果你写出了需要关心这个状态的代码,比如这个 safeApply,那一定是哪里出了问题。
- $digest 是用来执行 注册的watcher数组的。
- $apply 是用来往一个digest loop 里额外强制执行 一次 脏检查。
- $$phase 是用于标示 当前是否在 digest 中
- $watch 是用于注册watcher的
Scope.prototype.$watch = function (watchFn, listenerFn, valueEq) { ?var watcher = { ???watchFn: watchFn, ???listenerFn: listenerFn || function () { ???}, ???last: initWatchVal, ???valueEq: !!valueEq ?}; ?this.$$watchers.push(watcher); ?this.$$lastDirtyWatch = null;};