Лучший способ синхронизации объектов через все страницы в ионном? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть посты для отображения на главной странице моего приложения, которые я извлекаю из сервера в виде объектов JSON. У меня есть класс записей, и я создаю экземпляр для каждого полученного сообщения. Я помещаю эти экземпляры в массив и зацикливаю их на домашней странице. Но проблема начинается, когда пользователь обновляет или добавляет сообщение на другой странице.

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

Кроме того, код подписки должен быть запущен до того, как произойдет какое-либо событие, и мне нужно поместить код подписки на соответствующие страницы, чтобы я мог изменить представление при возникновении события. Но как насчет случая, когда пользователь не зашел на страницу, где я подписался на событие, но внес некоторые изменения, чтобы событие опубликовало. Функция обратного вызова этого события не работает, потому что я даже не смог подписаться на нее.

Итак, есть ли лучший способ синхронизации данных на всех необходимых страницах в ionic v3?

1 Ответ

0 голосов
/ 29 марта 2019

Если вы ищете что-то простое, я предлагаю просто написать statefull service


@injectable()
export class StateService {
  public stateChange$ = new Subject();
  private state: any = {};

  public setState(state: any) {
     this.state = state;
     this.stateChange.next(state);
  }

}

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

class ComponentX {
  constructor(private state: StateService) {
    this.state = state.state;
    this.state.state.subscribe(newState => {
      this.state = newState;
    }
  } 
}

Это не очень масштабируемое решение, но быстрое, и вам не нужно загружать новую библиотеку.

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