Я хочу сохранить текущее состояние, я не имею в виду сохранение url и params, я хочу сохранить весь вид с областями. На самом деле, я хочу реализовать facebook как поисковая система, но по-другому. Я хочу отобразить результаты на всей странице, поэтому я заменил текущее основное состояние, и когда панель поиска будет очищена, мы восстановим предыдущее состояние. Я не хочу восстанавливать состояние, чтобы восстановить состояние мгновенно (без запросов сервера) +, чтобы избежать сложных операций (например, бесконечные данные прокрутки..). Я нашел плагин ui'router extras (липкое состояние), но нам нужно определить, какое состояние сохранить с помощью определений состояний. Прошу прощения за мой плохой английский.
Это архитектурное решение. Ответ на этот вопрос не будет коротким и может быть очень субъективным, и разные люди будут иметь разные способы его реализации.
Я бы предположил, что вы используете локальное хранилище и выполняете все действия с данными, находящимися в локальном хранилище.
То, как вы это сделаете, - это сначала понять, что все запросы сервера должны выполняться с помощью службы, возвращающей то, что присутствует в 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, как если бы вы были в сети, но также разрешить контроллеру обновлять представление в зависимости от того, кэширован ли ответ или нет.
Вы можете сохранить дату в локальном хранилище с помощью углового локального хранилища. Это избавит вас от поездки на сервер для данных.