Dziś musiałem rozwiązać problem z wydajnością spowodowane przez ten kod: Przestrzegać UpdateStats zwanych wewnątrz szablonuFunkcja wewnątrz szablonu jest nazywane wiele razy (Angular JS)
<script type="text/ng-template" id="entityGrouper">
<section>
<div>
<ul ng-click="hideEntityBox = !hideEntityBox">
<li>
{{ entityNode.name }}
</li>
<li ng-repeat="breadcrumbItem in entityNode.breadcrumb">
{{ breadcrumbItem }}
</li>
</ul>
{{ updateStats(entityNode) }}
<span ng-include="'/mypath/views/resume.html'"></span>
</div>
<div>
<div ng-repeat="entityNode in entityNode.group" ng-include="'entityGrouper'"></div>
<div ng-repeat="entity in entityNode.group" ng-include="'entityBox'"></div>
</section>
</script>
użycie szablonu:
<div ng-repeat="entityNode in entityNode.group" ng-include="'entityGrouper'"></div>
Po debugowaniu tego kodu odkryłem, że ta funkcja została wywołana o wiele więcej czasu niż rozmiar tablicy (moja tablica ma 4 obiekty, a funkcja była wywoływana ponad 100 razy), nawet po najechaniu myszką nazwała tę funkcję. Naprawiłem to poprzez wstawienie ng-init do szablonu i teraz działa poprawnie, ale nie zrozumiałem, dlaczego ta funkcja została wywołana tyle razy. Czy jest coś w dwukierunkowym powiązaniu danych?
Czy rekursywnie wywołujesz ten sam szablon? znowu jest wywołanie '
' wewnątrz szablonu – Developer