通过离子的所有页面同步对象的最佳方法?

时间:2019-03-28 19:30:23

标签: angular typescript ionic3

我的应用程序主页中显示了一些帖子,这些帖子是我从服务器中以JSON对象的形式检索到的。我有一个帖子类,我为收到的每个帖子创建一个实例。我将这些实例放入数组,然后在主页中循环通过它们。但是,当用户在其他页面中更新或添加帖子时,问题就开始了。

我想在用户返回首页时显示帖子的更新版本或新帖子。到目前为止,我是通过事件订阅来完成的,但是当您要更新的内容太多时,它的确开始变得复杂,并且更新可能超过一页。

此外,订阅代码需要在任何事件发生之前运行,并且我需要将订阅代码放入相关页面,以便在事件发生时可以更改视图。但是,当用户没有访问我订阅事件的页面但进行了一些更改以使事件发布时,情况又如何呢?该事件的回调函数不起作用,因为我什至无法订阅它。

那么,在ionic v3中是否有更好的方法来同步所有必需页面中的数据?

1 个答案:

答案 0 :(得分:0)

如果您正在寻找简单的东西,我建议您只写有状态的服务


@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;
    }
  } 
}

这不是一个可扩展性很强的解决方案,但速度很快,您无需下载任何新的库。