AngularJS Wiki - Anti-Patterns声明如下:
不要这样做
if (!$scope.$$phase) $scope.$apply()
,这意味着你$scope.$apply()
在调用堆栈中不够高。
我有点理解这一点。有一个内置逻辑可以确定何时需要执行什么。而且,当外部开发人员在没有直接参与不同过程的运行时执行的情况下确定应该在哪里运行时,它会抵消框架。
但我目前正在上传一个大文件,其中通过进度条显示上传进度。我使用的库 (resumableJS) 又具有一个名为 fileProgress 的事件,在上传过程中调用该事件。如果我在那次活动期间什么都不做,则该栏不会更新。如果我放在$scope.$apply()
那里,栏会相应地更新,但我会得到摘要和/或应用已经在进行中的错误。最后,在$$phase
检查的帮助下,我得到了两全其美,更新的进度条没有任何错误。
那么在不干扰角度处理顺序的情况下更新我的条的正确替代方法是什么?