AngularJS Ошибка цикла Infinite $ digest - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь заполнить список div, используя ng-repeat.Я также использую структуру, которая имеет глубину (поэтому я могу перемещаться по элементам списка).

Чтобы установить эту глубину, мне нужно вызвать функцию getTotalDepths, которая проверяет текущий индекс элемента списка со значением tempIndex.Если они отличаются, он должен увеличить общую глубину и затем вернуть значение totalDepths.

После того, как я его запустил, возникает следующая ошибка (примерно 25000 раз):

UncaughtОшибка: [$ rootScope: infdig] `http://errors.angularjs.org/1.6.10/$rootScope/infdig?

HTML:

<div style="display: inline-block;" ng-repeat="item in items">
    <div class="item-list" focusable data-focusable-depth="{{getTotalDepths($index)}}">
        <img class="img-fluid" ng-src="{{item.picture}}" />
    </div>
</div>

Контроллер:

$scope.totalDepths = -1;
var tempIndex = -1;
var x;

$scope.getTotalDepths = function (index) {
    x = $scope.totalDepths;
    if (tempIndex != index) {
        tempIndex = index;
        x = $scope.totalDepths += 1;
    }
    return x;
}

Примечание: ошибка возникает, когда яувеличить totalDepths в этой строке:

x = $scope.totalDepths += 1;

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 22 мая 2018

С помощью @Slava я решил проблему.

Вызов метода getTotalDepths (), который я сделал, был большой ошибкой, так как Angular вызывает его в каждом цикле, и функция каждый раз возвращает различный результат.

Я исправил это, просто вызвав функцию внутри ng-init следующим образом:

<div style="display: inline-block;" ng-repeat="item in items" ng-init="depth = getTotalDepths($index)">
    <div class="item-list" focusable data-focusable-depth="{{depth}}">
        <img class="img-fluid" ng-src="{{item.picture}}" />
    </div>
</div>
...