2

目前我正在使用 $scope.$$phase 来避免这个Error: $digest already in progress问题,但我担心它将来是否可能会中断。由于它以“$$”为前缀,据我了解,这是 angularjs 的内部状态,用户代码不应使用它,并且它的行为可能随时改变(如果我错了,请纠正我)。但是我找不到其他好的解决方法来解决这个问题,所以我不得不使用它,但是我觉得使用一些未来不确定的东西有点不舒服。

我的问题是,对于以 $$ 为前缀的范围变量(或特别是 $$phase)的 API 稳定性是否有任何政策?我翻阅了官方文档并四处搜索,但找不到太多关于此的信息。

4

1 回答 1

0

没有人能保证它在未来不会改变,但考虑到当前 angular.js 源的样子,这似乎不太可能。

无论如何,最好将使用 $scope.$$phase 和 $scope.$apply() 的脚本包装在一个可重用的服务中,因此将来您将不得不替换一个依赖项而不是数百个文件。

如果您不想重新发明轮子,$scope.safeApply()是一个不错的示例:)

于 2013-09-18T13:07:03.243 回答