2016-09-02 10 views
0

Ich versuche, eine Bereichsliste innerhalb einer Callback-Funktion zu aktualisieren. Das funktioniert anscheinend gut, aber nach einigen Sekunden erhält die Konsole einen Fehler: [$ rootScope: infdig]. Ich habe versucht, die wechselseitige Datenbindung zu deaktivieren, aber der Fehler geht weiter.

Controller:

app.controller('ChapterCtrl', function ($rootScope, $scope, Services, chapter) { 
    $rootScope.headerTitle = chapter.name; 
    $scope.terms = []; 

    cctdbterms.webdb.getTermsByChapter(chapter.id, function(tx, results) { 
     $scope.terms = results.rows; 
     $scope.$apply(); 
    }); 
}); 

Ausblick:

<div class="view" ng-repeat="term in terms"> 
    <div ng-bind-html="term.description"></div> 
</div> 
+0

Warum müssen Sie '$ scope.apply()' hinzufügen? versuche es zu entfernen und poste das Ergebnis. –

+0

Ohne '$ scope.apply()' wird der Fehler fortgesetzt und ich kann den Wert für meine Ansicht nicht abrufen. –

Antwort

0

Die Antwort, dass ein Fund ist seraching ist: „Das Problem war, dass der Filter wurde jedes Mal, damit eine andere Array verursacht eine Schleife“ aus Why do I get an infdig error?

Wenn ich darüber nachdenke, löste ich auf einfache Weise meine wiederkehrende Liste:

app.controller('ChapterCtrl', function ($rootScope, $scope, Services, chapter) { 
    $rootScope.headerTitle = chapter.name; 
    $scope.terms = []; 

    cctdbterms.webdb.getTermsByChapter(chapter.id, function(tx, results) { 
     for (var i = 0; i < results.rows.length; i++) { 
      var term = results.rows[i]; 
      $scope.terms.push(term); 
     } 
     $scope.$apply(); 
    }); 
}); 
Verwandte Themen