2016-07-01 12 views
-1

Ich habe diese Funktion, die Daten von der Datenbank abruft und Werte des Bereichs aktualisiert.AngularJS scope.apply verursacht Fehler

$scope.loadFromDB = function(){ 
       console.log("loadFromDB function"); 
       $http({ 
         url: '/getData', 
         method: "GET", 
        }) 
        .then(function(response) { 
          // success 
          var data = JSON.parse(response.data) 
          data = JSON.parse(data.data) 
          $scope.gridDataDayData = data.dayData; 
          $scope.gridDataKlasoveNames = data.klasoveNames; 
          $scope.gridDataNumOfRows = data.numOfRows; 
          $scope.$apply(); 
         }, 
         function(response) { // optional 
          // failed 
          console.log("get unsuccessful"); 
         }); 
      }; 

Wenn ich laufe dies obwohl ich

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

bekomme ich nicht herausfinden kann, wie dies zu beheben. Bitte hilf mir.

Danke

+0

Was ohne '$ Umfang geschieht entfernen gilt $();. '? – Rayon

+0

Es ist nicht die Rasterdaten aktualisieren – mp3por

+0

'$ Rahmen Versuchen $ (function() {gelten $ scope.gridDataDayData = data.dayData;. $ scope.gridDataKlasoveNames = data.klasoveNames; $ scope.gridDataNumOfRows = data.numOfRows ; }); ' – Rayon

Antwort

0

Sie brauchen die nicht auslösen Zyklus verdauen, weil Sie im Inneren des Winkellebenszyklus sind ... es bereits ausgeführt wird. Eine manuelle Auslösung ist erforderlich, wenn Sie außerhalb von dem Winkel Weg sind: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

+0

, aber es aktualisiert nicht die UI – mp3por

+0

, wenn es keine Updates gibt, liegt der Fehler an anderer Stelle, aber nicht hier ... Ihr Skript ist ein wenig verwirrend, zum Beispiel müssen Sie nicht als JSON analysieren, weil eckig tut es für dich ... aber ist richtig und sollte funktionieren. – Hitmands

0

einfach

var data = JSON.parse(response.data)           
data = JSON.parse(data.data) and $scope.$apply() 

und

$scope.$apply();

Verwandte Themen