it-swarm.com.ru

Сохранить данные страницы при обновлении страницы

Я новичок в угловой. Я использую сервис, который получает список объектов и отображает их на 1-й странице. Затем, основываясь на том, какой объект был нажат, я устанавливаю заголовок вкладки на следующей странице. Но пока я обновляю страницу, область действия списка теряется, и заголовок вкладки выдает исключение, в результате чего страница не отображает информацию. Есть ли способ сохранить информацию о том, какой объект был нажат на предыдущем экране, даже при обновлении 2-й страницы?

14
Nutan

Вы можете использовать угловое локальное хранилище 

Угловое локальное хранилище

Пример как это использовать:

Пример использования локального хранилища

4
V31

Если вы новичок в Angular и работаете над некритическим проектом, дополнительный вызов удаленному сервису - это не конец света.

Есть ли способ сохранить информацию о том, какой объект был нажат на предыдущем экране, даже при обновлении 2-й страницы? 

Вы используете маршрутизацию в своем приложении?

Смотрите пример: http://plnkr.co/edit/Svg4Po13hMq7WxzNwKDc?p=preview

Контроллеры

app.controller("main", function($scope) {
    $scope.items = [1,2,3,4];
}); 
app.controller("detail", function($scope, $routeParams) {
    $scope.myvalue = $routeParams.id;
});

Конфигурация маршрутизации

var app = angular.module("app", ['ngRoute']);
app.config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'main',
        controller: 'main'
      })
      .when('/detail/:id', {
        templateUrl: 'detail',
        controller: 'detail'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

Когда вы обновляете страницу сведений, она запоминает свое состояние. Тогда вы можете попросить службу данных.

4
Michal Stefanow

У вас есть несколько приложений angularjs? Теоретически у вас должен быть один HTML-файл и партиалы/контроллеры, вы можете хранить данные, которые вы хотите использовать, в фабричном (singleton) или angularJS-кеше, если вы собираетесь перемещаться между несколькими HTML-страницами, вы можете использовать локальное хранилище или перезагрузить данные с сервера.

Несколько полезных ссылок:

$ кэш

https://docs.angularjs.org/api/ng/service/ $ cacheFactory

Локальное хранилище:

Как я могу хранить данные в локальном хранилище, используя Angularjs?

2
Braulio

Лучшая практика для обработки подобных сценариев - через комбинацию angular service + localalstorage 

  • Сервис поможет вам передавать данные между двумя страницами/ контроллерами. 
  • И сохранение этих данных в localstorage поможет вам Получить эти данные при обновлении страницы

И если данные являются просто идентификатором в URL, то ответ @Michal Stefanow тоже подойдет.

Справочная ссылка

1
Muslim Munir