Angularjs [$rootScope:inprog] inprogress error

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-18 03:51:15

问题


I am getting angularjs [$rootScope:inprog] error.

Error: [$rootScope:inprog] http://errors.angularjs.org/1.2.7/$rootScope/inprog?p0=%24digest.

this is the function calling

 Members.get({}, function (response) { // success
   $scope.family_mem = response.data;    
  }, function (error) { // ajax loading error

    Data.errorMsg(); // display error notification
  });

in console i am getting results by php controller function.but not updating $scope.family_mem instead going to error part. this is the directive

myApp.directive('mySelect', function() {
  return{
    restrict: 'A',
    link: function(scope, element){
      $(element).select2();
    }
  };
});

回答1:


Usually this means that you defined $rootScope.$apply somewhere manually inside of the another angular code which has lifecycle already. This should not be happen in common cases as angular tracks the lifecycle itself. The one common case where it is needed is when you need to update scope from non-angular code (like jquery or old-fashioned js stuff). So please check if you have this somewhere. In case you really need it's better to use safe apply (the common code snippet):

angular.module('main', []).service('scopeService', function() {
     return {
         safeApply: function ($scope, fn) {
             var phase = $scope.$root.$$phase;
             if (phase == '$apply' || phase == '$digest') {
                 if (fn && typeof fn === 'function') {
                     fn();
                 }
             } else {
                 $scope.$apply(fn);
             }
         },
     };
});

Then you can inject this service and make necessary calling by:

scopeService.safeApply($rootScope, function() {
    // you code here to apply the changes to the scope
});



回答2:


[$rootScope:inprog] inprogress error in my case:
Case 1: It means you're executing two actions at a time.

Example:

goView();
hidePopOver(); //Will trigger error

Use $timeout to make sure two actions (function) are not running at the same time.

goView();
$timeout(function () {
    hidePopOver();
}, 300);

Case 2: an action has not executed completely.
Use $timeout to make sure first action has executed.

$timeout(function () {
    $(element.target).trigger('click');
}, 300);


来源:https://stackoverflow.com/questions/22733422/angularjs-rootscopeinprog-inprogress-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!