Действительно ли 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.
Рекомендации