Angular.js кэширует $ скомпилированные шаблоны / производительность рендеринга директив внутри ng-repeat
У меня есть директива, которая отображает ячейку таблицы (посмотрите, как я ее компилирую здесь, в основном используя$compile
внутриlink fn
Шаблон директивы Angular.js с использованием переменной из родительской / унаследованной области видимости), теперь это используется внутри двухng-repeat
s, один для строк, один для столбцов, так что это в основном
<ng-repeat row in rows>
<ng-repeat column in columns>
<my-cell-directive />
</ng-repeat>
</ng-repeat>
с 50 строками и 8 столбцами это оказало довольно большое (в любом случае, довольно заметное) влияние на производительность рендеринга.
Поэтому я искал способ улучшить его. Сначала я попытался избавиться от этого внутреннего повтора для столбцов, создавmy-cols-directive
который внутренне перебирает столбцы, находит их шаблон, создает одну строку (с этими 8 столбцами внутри) и затем компилирует ее. Это снизило количество компиляций с 400 до 50. Но на самом деле не было заметного улучшения при рендеринге (хорошо, но только на 15%).
Теперь моя другая идея заключалась в том, чтобы как-то сократить его до одной компиляции, в основном компилируя его в первой итерации ng-repeat, затем сохраняя (кэшируя) скомпилированный результат, чтобы директива использовала его вместо компиляции снова и снова, просто заменив значения привязки на значения из текущей итерации.
Возможно ли это как-нибудь? Или есть другой способ улучшить скорость рендеринга?