Angular.js кэширует $ скомпилированные шаблоны / производительность рендеринга директив внутри ng-repeat

У меня есть директива, которая отображает ячейку таблицы (посмотрите, как я ее компилирую здесь, в основном используя$compile внутриlink fn Шаблон директивы Angular.js с использованием переменной из родительской / унаследованной области видимости), теперь это используется внутри двухng-repeats, один для строк, один для столбцов, так что это в основном

<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, затем сохраняя (кэшируя) скомпилированный результат, чтобы директива использовала его вместо компиляции снова и снова, просто заменив значения привязки на значения из текущей итерации.

Возможно ли это как-нибудь? Или есть другой способ улучшить скорость рендеринга?

Ответы на вопрос(1)

Ваш ответ на вопрос