找到错误的原因:[$ rootScope:inprog] $申请已在进行中

时间:2017-10-05 11:59:56

标签: angularjs angularjs-scope angularjs-rootscope

我的应用程序有一个带有一些面板的仪表板,每个面板都有一个图表。(我使用Angular-Chart.js)每个面板都是一个不同的自定义指令。

我的TickService带有全局 tick ,每1秒广播一次

 function sendUpdateTich()
    {      
     $rootScope.$broadcast("TICK_UPDATE_TIME");
     $timeout(sendUpdateTich, 1000);
    }

每个指令都会侦听 tick ,以更新自己的图形。

    $scope.$on("TICK_UPDATE_TIME", function (event, data) 
                            {
                             /* update chart's data */
                             //  $scope.$apply();
                            });

即使按照我自己的逻辑,我也会使用$scope.$apply()刷新指令'图表,我评论它,因为它没用,图表已经被他们自己刷新。

无论如何,有时我会遇到这个错误:

Error: [$rootScope:inprog] $apply already in progress
http://errors.angularjs.org/1.5.3/$rootScope/inprog?p0=%24apply
http://localhost:8100/lib/ionic/js/ionic.bundle.js:13443:32
beginPhase@http://localhost:8100/lib/ionic/js/ionic.bundle.js:30758:31
$apply@http://localhost:8100/lib/ionic/js/ionic.bundle.js:30498:21
http://localhost:8100/js/orecchioDirective.js:25:40
$broadcast@http://localhost:8100/lib/ionic/js/ionic.bundle.js:30723:33
stopCheckinProximity@http://localhost:8100/js/callTimeService.js:226:26
stopChecking@http://localhost:8100/js/callTimeService.js:163:25
setEnded@http://localhost:8100/js/statusCallService.js:62:34
endCall@http://localhost:8100/js/controllers.js:319:31
fn
http://localhost:8100/lib/ionic/js/ionic.bundle.js:65429:21
$apply@http://localhost:8100/lib/ionic/js/ionic.bundle.js:30500:30
http://localhost:8100/lib/ionic/js/ionic.bundle.js:65428:19
defaultHandlerWrapper@http://localhost:8100/lib/ionic/js/ionic.bundle.js:16792:15
eventHandler@http://localhost:8100/lib/ionic/js/ionic.bundle.js:16780:23
dispatchEvent@[native code]
triggerMouseEvent@http://localhost:8100/lib/ionic/js/ionic.bundle.js:2953:20
tapClick@http://localhost:8100/lib/ionic/js/ionic.bundle.js:2942:20
tapMouseUp@http://localhost:8100/lib/ionic/js/ionic.bundle.js:3018:13

根据其他一些广播事件,我认为(我不知道,但我只是想......)。我没有任何$ scope。$ apply,$ rootScope。$不应用$ scope。$ refresh,代码中的任何位置。问题是什么?

[更新1] 根据{{​​3}},$timeout()$apply()致电我们,因此我们不必这样做。由于我在服务中有其他$timeout(),它们是否可能混乱?

0 个答案:

没有答案