UI-роутер AngularJS сохраняет предыдущее состояние

0

Я хочу сохранить текущее состояние, я не имею в виду сохранение url и params, я хочу сохранить весь вид с областями. На самом деле, я хочу реализовать facebook как поисковая система, но по-другому. Я хочу отобразить результаты на всей странице, поэтому я заменил текущее основное состояние, и когда панель поиска будет очищена, мы восстановим предыдущее состояние. Я не хочу восстанавливать состояние, чтобы восстановить состояние мгновенно (без запросов сервера) +, чтобы избежать сложных операций (например, бесконечные данные прокрутки..). Я нашел плагин ui'router extras (липкое состояние), но нам нужно определить, какое состояние сохранить с помощью определений состояний. Прошу прощения за мой плохой английский.

Теги:
angular-ui-router

2 ответа

0

Это архитектурное решение. Ответ на этот вопрос не будет коротким и может быть очень субъективным, и разные люди будут иметь разные способы его реализации.

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

То, как вы это сделаете, - это сначала понять, что все запросы сервера должны выполняться с помощью службы, возвращающей то, что присутствует в localstorage, в сети.

Таким образом, все вызовы AJAX будут выполняться с контроллера таким образом

var getMeRequest = AuthService.getMe();
getMeRequest.promise.then(function(response){ 
  if(response.cached) {
    // $update views if need be  
  } else {
    //Some code
  }
});

И в файле AuthService вы сделаете так:

// In AuthService

this.getMe() =  function () {
  if(network.online) {
    //Make AJAX call
    // Update localstorage with whatever response
    return {response: locastorageData, cached:false};
  } else {
    return {response: localstorageData, cached:true};
  }
  
};

Это позволит не только сделать все вызовы ajax, как если бы вы были в сети, но также разрешить контроллеру обновлять представление в зависимости от того, кэширован ли ответ или нет.

0

Вы можете сохранить дату в локальном хранилище с помощью углового локального хранилища. Это избавит вас от поездки на сервер для данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню