Подтвердить что ты не робот

Как приложение angular обрабатывает страницу обновления и может ли мы использовать директивы загрузки $history при загрузке

Итак, два вопроса.

  • Как приложения angular обрабатывают страницу обновления, b/c из того, что я слышал, $rootScope destroy() при обновлении, и приложение снова запускается и повторно настраивается, и мне было интересно, есть ли там элегантный способ сохранить $rootScope без необходимости хранить переменные $rootScope в виде строки в хранилище.

  • Если я загружаю шаблон в директиву, которая загружает модальный файл на странице, можно ли настроить историю не для навигации, а для возврата открытого модального кода. и из-за валидации и т.д., я не думаю, что можно реализовать ту же функцию с помощью href.

4b9b3361

Ответ 1

Если ваш URL-адрес сопоставлен с $routeProvider, вы можете перезагрузить диспетчер, вызывающий $route.reload(). Это обновление страницы без уничтожения $rootScope.
Я создал плункер, чтобы показать это. Контроллер подсчитывает, сколько раз страница была перезагружена.

Ответ 2

Вероятно, нет возможности сохранить какую-либо переменную javascript через перезагрузку страницы, а $rootScope - это просто переменная javascript.

Похоже, что то, что вы ищете, - это способ заставить ваше приложение "начать с той же точки", что оно осталось при перезагрузке страницы. Я бы рекомендовал вам ознакомиться с понятием государства. Каждое приложение можно рассматривать как набор состояний и переходов между ними. Каждое взаимодействие с пользователем или любые другие действия, которые происходят в приложениях, либо изменяют состояние приложения, либо сохраняют его в одном и том же состоянии. Например: нажатие на ссылку пользователя из списка пользователей изменяет состояние из "просмотра списка пользователей" на "просмотр сведений о пользователе для пользователя с id = 213", нажатие кнопки "Изменить" на "просмотр сведений о пользователе для пользователя с id = 213" изменяет состояние на "редактировать пользователя с id = 213". И по мере того, как эти переходы происходят, переменным присваиваются значения, изменяются представления, запросы отправляются и т.д.

Две вещи, которые необходимы для проблемы "начать с одной и той же точки", - это менеджер штата и способ сериализации и хранения состояний.

В качестве государственного менеджера, помимо директивы ядра $router, вы можете использовать ui-router. Что касается способа сериализации и хранения состояния с ui-router, то это через URL. Преимущество ui-router over core $router заключается в том, что он допускает вложенные состояния и, как правило, более гибкий.

ui-router также имеет решение для вашего второго вопроса в своей wiki-библиотеке github https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state

Ответ 3

Не могли бы вы использовать window.localstorage для сохранения ваших переменных js? Таким образом, если пользователь обновит страницу за пределами приложения, вы можете перезагрузить свои значения.