Одно время связывания вызывается бесконечно много раз. Почему? - PullRequest
0 голосов
/ 11 марта 2020

Одноразовая привязка не работает в AngularJS. Почему?

Вот фрагмент кода:

<div ng-repeat="c in ::relatedCasesInfo.hideRelations(type.cases, info) 
       | limitTo:relatedCasesInfo.initialRelationsAmount track by c.idFromFirst"
     class="initial-case-container">
    <ng-include ng-repeat="name in [c.name + (type.otherCasesArePresent || !$last || type.cases.length > relatedCasesInfo.initialRelationsAmount ? ', ' : '' )]"
        src="'dist/directiveTemplates/card/controls/relatedCases/casesContextMenu.html?v=' + $root.appVersion">
    </ng-include>
</div>

Вот функция hideRelations:

function hideRelations(relations, info) {
    return relations;
};

После запуска html я вижу, что hideRelations вызывается бесконечно много раз. Почему? Чего мне здесь не хватает?

1 Ответ

2 голосов
/ 11 марта 2020

Каркас пересчитывает заново, потому что функция либо возвращает значение undefined, либо расчет нестабилен.

Из документов:

Одноразовая привязка

Выражение, которое начинается с ::, считается одноразовым выражением. Одноразовые выражения прекратят пересчет, как только они станут стабильными , что происходит после первого дайджеста, если результатом выражения является неопределенное значение (см. алгоритм стабилизации значения ).

Для получения дополнительной информации см.

...