0

Я использую Angular 1.4. Общеизвестно, что ng-repeat может иметь некоторые проблемы с производительностью при рендеринге большого количества строк для таких вещей, как таблицы. Но мне было интересно, существует ли оптимальный способ использования ng-repeat или какой-либо альтернативной итерации, чтобы просто отобразить массив данных, которые у меня есть, для таблицы.Render таблицы строк без привязки для производительности

Мне не нужна привязка, так как это просто вывод данных для отчета. Я пробовал некоторые предложения, такие как одноразовая привязка, но все равно занимает много времени (10 секунд или более для 1000 записей или около того). Другие неагрегатные методы, которые я пробовал, представляют собой предварительный рендеринг HTML на бэкэнд, а затем возвращают HTML вместо массива данных. И у меня была специальная директива, которая просто добавила HTML в элемент. Это было меньше секунды для даже 2000 строк (очевидно, поскольку я не использовал Angular).

Но было бы хорошо, если бы я мог выполнить то же самое в Угловом, или даже сделать что-то подобное в контроллере на угловой стороне. Любой вход был бы оценен.

+0

Интересно, почему вы хотите отображать 1000 строк. – ChiefTwoPencils

+0

Я бы обычно разбивал на страницы, но пользователи хотят видеть все данные за один раз или делать Ctrl + F, чтобы найти запись, которую они ищут. Так что это скорее бизнес-требование. Хотя они не слишком распространены, отчет, который они запускают, основан на диапазоне дат, поэтому количество записей может быть большим, если они выбирают большой временной интервал. – kenshin9

+0

Это он, какой он тогда, я думаю. Я бы дал [Использовать ng-repeat экономно] (http://stackoverflow.com/documentation/angularjs/1921/profiling-and-performance/6270/7-simple-performance-improvements#t=20170220203549826701), в том числе «другие подходы ", кроме пейджинга. По правде говоря, они, вероятно, не видят их всех, вам просто нужно дать им представление, которое они могут, и другие функции, о которых вы говорили, все еще могут быть достигнуты. – ChiefTwoPencils

ответ

0

Вы можете использовать одну сторону связывания для этого:

<ul ng-repeat="item in ::items"> 
    <li>{{ ::item.name }}</li> 
</ul> 

Обратите внимание, что вы должны добавить синтаксис :: для каждой записи в ретранслятор.

Я не уверен, насколько сложна ваша логика, но 10 секунд для 1000 строк звучат абсурдно.