Имейте указание angular.js, которое отображается в виде таблицы. В большинстве случаев таблица небольшая, поэтому производительность не является проблемой.Избегайте ненужной оценки связанных значений в Angular.js
Но иногда таблица имеет много строк (например, тысяч), поэтому рендеринг каждой строки дорог, так как каждое значение привязки оценивается дважды, и существует множество связанных значений. И Angular, кажется, очень много оценивает эту таблицу, только чтобы найти, что все значения в ней не изменяются и, следовательно, не нужно переизлучать, парализуя приложение без необходимости.
Например, вся таблица представляется переоцененной, когда значение $scope.showMenu
изменяется на mouseenter
/mouseleave
.
Есть ли способ рассказать Угловой, что вся таблица зависит от какого-либо другого значения, скажем, $scope.checksum
, так что если это не изменится, то вся таблица не изменится?
<div class="header" ng-mouseenter="showMenu=true" ng-mouseleave="showMenu=false">
<!-- show dropdown menu only when hovering over the header -->
<span ng-if="showMenu" class="menu dropdown" > ... menu content goes here...</span>
<h2>{{getTitle()}}</h2>
<p>{{description}}</p>
</div>
<table>
<tr ng-repeat="key in rowKeys">
<td title="{{getRowItem(key)|pretty">{{getRowItem(key)|abbreviated}}</td>
<td>{{getRowValue(key)|number</td>
</tr>
enter code here
</tr>
</table>
Сверху моей головы, если вы попробуете обернуть каждую секцию в своем собственном контроллере, чтобы каждый раздел имел различную $ scope, помогает ли что-нибудь? Создание таблицы собственной директивой также создало бы новую область $. – Hylianpuffball
Это, безусловно, будет более чистый код, отделяющий пользовательский интерфейс от данных. Попробуй это сейчас. Я вижу из списка «Связанных» сообщений пару для рендеринга больших списков, поэтому также будет ограничено количество строк, которые отображаются с помощью 'limitTo'. Все равно было бы неплохо отметить зависимости, чтобы грязная проверка не оценивала каждое связанное значение. – prototype
Прежде чем погрузиться в него, я бы предложил рассмотреть другие улучшения производительности для больших угловых списков JS. Http://tech.small-improvements.com/2013/09/10/angularjs-performance-with-large-lists/ – roo2