Я создал отчет, который использует набор вложенных директив ng-repeat для создания огромной таблицы. Он хорошо работает для построения таблицы, но после этого производительность прокрутки сильно снижается - я предполагаю, что это связано с тем, что должно быть большое количество часов, созданных ng-repeats.
Отчет нужно создать только один раз, после чего он становится статическим. Мне не нужно постоянно следить за данными.
У меня есть два вопроса:
A) можно ли как-то увидеть список всех переменных, которые Angular в данный момент наблюдает?
РЕДАКТИРОВАТЬ: Этот пост был большим подспорьем в обучении тому, как проводить бенчмаркинг
Б) Можно ли как-нибудь сказать Angular остановить все часы, которые он делает? Я видел много сообщений об отмене часов, которые человек настраивает самостоятельно, но это нативные директивы, я не уверен, как бы я их использовал.
Я бы предпочел иметь переменную, о которой я могу сказать «если правда, то делать все часы, если нет, то не смотреть», или функцию, которая просто говорит «запускать часы» и «останавливать часы».
Я настроил очень хорошую службу наблюдения за DOM, которая может сказать, когда все ng-повторы выполнились, поэтому я могу знать, когда я хочу прекратить наблюдение.
Это сама таблица. Помимо tk-ng-repeat-completed, другие атрибуты «tk-» просто используются для данных и на самом деле не являются директивами.
<div class="table-responsive">
<table tk-sticky-column id="records" class="table table-striped table-hover table-condensed">
<!-- tbody[n] -->
<tbody class="dataset" ng-repeat="dataset in report.data track by $index" tk-ng-repeat-completed>
<!-- row[0] -->
<tr class="headline">
<!-- header[0] label -->
<th class="headline" style="background-color:#042E34;">
<div style="width:200px;"><h4>{{report.labels.y[$index]}}</h4></div>
</th>
<!-- header[n] label -->
<th ng-repeat="x_label in report.labels.x" tk-ng-repeat-completed
class="datapoint date"
tk-raw-data="{{x_label}}">
<em><small>{{x_label}}</small></em></th>
<!-- header[last] space for addition @todo remove this, add during calculations -->
<th class="date"></th>
</tr>
<!-- row[n] -->
<tr ng-repeat="(key, datapoints) in dataset" tk-metric-key="{{key}}">
<!-- column[0] label -->
<td tk-metric-key="{{key}}"
tk-calc="{{report.labels.data[key].calc}}"
class="rowdesc begin">{{key}}</td>
<!-- column[n] data -->
<td ng-repeat="datapoint in datapoints track by $index" tk-ng-repeat-completed
ypos="{{$parent.$parent.$parent.$index}}" xpos="{{$index}}" tk-metric-key="{{key}}"
class="datapoint"
tk-raw-data="{{datapoint}}">
{{datapoint}}</td>
</tr>
</tbody>
</table>
</div>