2014-03-29 4 views
16

Ich bekomme angularjs [$ rootScope: inprog] Fehler.

Error: [$rootScope:inprog] http://errors.angularjs.org/1.2.7/$rootScope/inprog?p0=%24digest. Ich erhalte Ergebnisse von PHP-Controller function.but nicht aktualisiert $scope.family_mem stattdessen geht Aufruf einen Fehler

ist dies die Funktion

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

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

in der Konsole. ist dies die Richtlinie

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

können Sie Geige hinzufügen? –

+0

Ich denke, Sie verwenden minimierten angularjs Quellcode. Verwenden Sie 'angular.js' anstelle von' angular.min.js', um detaillierte Informationen über den Fehler zu erhalten. –

+0

Wenn angular.js verwendet wird, wird Digest in Bearbeitung Fehler –

Antwort

26

Normalerweise bedeutet dies, dass Sie $ rootScope definiert. $ Innerhalb des anderen Winkel Code irgendwo manuell anzuwenden, die Lebensdauer bereits. Dies sollte in üblichen Fällen nicht passieren, da der Lebenszyklus der eckigen Spuren verfolgt wird. Der einzige häufige Fall, in dem es benötigt wird, ist, wenn Sie den Bereich von nicht-eckigen Code (wie jQuery oder altmodische js Zeug) aktualisieren müssen. Also überprüfe bitte, ob du das irgendwo hast. Im Fall, dass Sie es wirklich besser ist, sicher in der Anwendung gelten (der gemeinsame Code-Schnipsel):

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); 
      } 
     }, 
    }; 
}); 

Dann können Sie diesen Service injizieren und notwendige Berufung machen durch:

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

kein Fehler für eine bestimmte Menge von Daten in der Datenbank angezeigt. nach den Grenzen zeigt es den Fehler –

+0

Ok. Ich denke, dass das Problem mit der Serverseite sein kann, aber der Fehler, den Sie erwähnten, ist ein anderer Fehler, wenn Sie die Logik behandeln? Wo ist der Fehler aufgetreten? Bei Data.errorMsg()? Irgendwo anders? –

+0

Ich weiß nicht, wo der Inprogress-Fehler auftritt. aber Data.errorMsg() zeigt einen anderen Fehler, der benutzerdefiniert ist. –

4

[$ rootScope: inprog] Inprogress-Fehler in meinem Fall:
Fall 1: Es bedeutet, dass Sie zwei Aktionen gleichzeitig ausführen.

Beispiel:

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

Verwenden $ timeout um sicherzustellen, dass zwei Aktionen (Funktion) nicht zur gleichen Zeit ausgeführt werden.

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

Fall 2: eine Aktion nicht vollständig ausgeführt hat.
Verwenden Sie $ timeout, um sicherzustellen, dass die erste Aktion ausgeführt wurde.

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