2016-09-02 3 views
0

Я пытаюсь обновить список областей внутри функции обратного вызова. Это, видимо, отлично работает, но через несколько секунд консоль получает ошибку: [$ rootScope: infdig]. Я попытался отключить двустороннюю привязку данных, но ошибка продолжается.

Контроллер:

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

Вид:

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

Зачем вам нужно добавить '$ scope.apply()'? попробуйте удалить его и опубликовать результат. –

+0

Без '$ scope.apply()' ошибка продолжается, и я не могу получить значение на моем представлении. –

ответ

0

Ответ, что находка seraching является: «Проблема в том, что фильтр обеспечивает различный массив каждый раз, следовательно, в результате чего цикл» от Why do I get an infdig error?

Думаю об этом, я решил простым способом, вступая в мой возвращающийся список:

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