Действительно ли angular2-beta.0 кэширует вид?

СКОРОСТЬ И РАБОТА

Angular 2 значительно быстрее, чем Angular 1, с поддержкой быстрой начальной загрузки посредством предварительной рендеринга на стороне сервера, автономной компиляции для быстрого запуска, сверхбыстрого обнаружения изменений и кэширования представления для плавной виртуальной прокрутки и быстрого перехода между представлениями.

Функции выглядят великолепно, но нормальным требованием является то, что когда я ListComponent в ViewComponentЯ хочу сохранить ListComponent кэшируется так, когда я нажимаю обратно из ViewComponent, ListComponent не нужно перерисовывать (ListComponent часто получает данные AJAX со страницы 2 и т. д. Я знаю, что могу хранить данные в службе и сохранять scrollPosition когда я нажму назад, но он будет повторно представлять данные снова. Я действительно думаю, что кэширование это лучший способ.

Я реализую CanReuse, но он не работает, он работает только при навигации между ViewComponents, Итак, я хочу знать, как ListComponent в ViewComponent кеширование может работать.

1 ответ

Используйте класс ProtoViewRef:

ProtoView - это прототипное представление, являющееся результатом компиляции шаблона и используемое Angular для эффективного создания экземпляра этого представления на основе скомпилированного шаблона.

Большинство ProtoViews создаются и используются внутри Angular, и вам не нужно знать о них, за исключением сложных случаев, когда вы сами компилируете компоненты с помощью низкоуровневого API компилятора.

пример

Учитывая этот шаблон:

Count: {{items.length}}
  <ul>
    <li *ngFor="var item of items">{{item}}</li>
  </ul>

Angular desugars и компилирует шаблон в два ProtoView:

  • Внешний ProtoView:

    Count: {{items.length}}
    <ul>
      <template ngFor var-item [ngForOf]="items"></template>
    </ul>
    
  • Внутренний ProtoView:

    <li>{{item}}</li>
    

Обратите внимание, что исходный шаблон разбит на два отдельных ProtoView.

Рекомендации