问题描述
有如下一段ng代码:
$scope.safeApply = function(fn){ var phase = this.$root.$$phase; if (phase == ’$apply’ || phase == ’$digest’) { if (fn && ( typeof (fn) === ’function’)) { fn(); } } else { this.$apply(fn); }}
这段代码的意思应该是说,执行fn这个函数,是否需要调用scope.$apply(),如果不需要就直接调用fn,如果需要,那就调用scope.$apply(fn)...但是,我想知道$root.$$phase是什么,为什么通过它就可以判断是否需要执行$apply.希望能有懂ng原理的高手帮忙解答一下~ 谢谢~~~
问题解答
回答1:$$phase 是 angluar 内部使用的状态标志位,用于标识当前是否处于 digest 状态。
通常程序中不需要关心这个状态(两个 $ 打头更说明它是内部使用的),如果你写出了需要关心这个状态的代码,比如这个 safeApply,那一定是哪里出了问题。