0

У меня есть стандартная страница Master> Details в настройке AngularJS с использованием RouteProvider.Как кешировать страницу с помощью AngularJS RouteProvider?

На странице мастера есть вариация «бесконечная прокрутка», где данные могут быть добавлены и удалены с обоих концов. Скажем, пользователь просматривает список контактов и прокручивается до 312-й записи списка контактов, сохраняются только контакты с номерами 200-400, а записи 1-200 удаляются из области видимости. Конечно, когда пользователь прокручивает DOWN за пределы 360, список добавляется с 401-500. И если свитки UP выше 240, список будет «предварительно отложен» с 100-199.

Теперь пользователь может нажать на конкретный контакт и перейти на страницу сведений. При нажатии «Back» (window.history.back) как я могу сделать мастер страница повторно сделать с,

  1. Точный список 200-400, как это было, когда страница была оставлена ​​

  2. прокручивается точно в положение 312

  3. (ВАЖНО) Слушатели все еще правильно прослушивают события прокрутки за пределами 360 или выше 240?

Возможно ли это? И если да, пожалуйста, помогите мне с чем.

ответ

0

Я не собираюсь писать код для этого, это немного трудно без глубокого понимания того, как ваши бесконечные произведения прокрутки, но будет предлагать некоторые идеи

Первое, что нужно было бы хранить мнение состояния в службе и для более надежного сохранения (перезагрузки страниц или обратных посещений) в localStorage, синхронизированном с сервисом.

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

Что касается прокрутки вы можете использовать обработчик события прокрутки в директиве, чтобы обновить объект службы со смещением scrollTop для того, чтобы установить на последующий визит .... angular.element(containerElement)[0].scrollTop = service.scrollTop как свободный пример

Существует также $anchorScroll сервис, который можно использовать при настройке ID по каждому пункту

Это не даст вам полное решение, но, надеюсь, вы начали

Обратите внимание, что вам необходимо будет учитывать время, необходимое, чтобы сделать ng-repeat по откладывание на следующий цикл дайджеста перед тем как попытаться установить scrollTop, если вы используете это

+0

Не могли бы вы предложить механизм для сохранения живых слушателей на главной странице (требование № 3)? Я удивлен, что для моих требований нет прямого решения для кеширования, что мы должны написать код для управления всеми этими. Ваш ответ подтвердил, что я не сумасшедший, чтобы от него завидовать. Спасибо вам за это. – Nat