Посмотрите пример ниже. В этом случае «expensiveFunction» вызывается для каждого элемента в MyListУгловой ретранслятор внутри ul - как добавить ng-show без нарушения html
<ul>
<li ng-show="expensiveFunction(period)" ng-repeat="a in myList">
<a ng-click="onMove(period)">Move here </a>
</li>
<li ng-hide="!canBook">
<small>No free resources</small>
</li>
</ul>
Любые идеи о том, как предотвратить это?
<ul>
<!-- Possible, but creates invalid html -->
<div ng-show="expensiveFunction(period)">
<li ng-repeat="a in myList">
<a ng-click="onMove(period)">Move here </a>
</li>
</div>
<li ng-hide="!canBook">
<small>No free resources</small>
</li>
</ul>
Спасибо за любые предложения
Larsi
Почему итоговый html недействителен? –
@AndreKreienbring Создает div ниже ul. Он должен иметь только личный дочерний элемент li – Larsi
, как правило, вы не должны вызывать дорогостоящие функции из html вообще, так как они все равно запускаются каждый дайджест, и вы не можете управлять этим –