离子角订户未更新



如何在另一个页面上反映可观察量的变化。

我有两个页面,第 1 页和第 2 页订阅了同一个可观察量。

在第1页中,我在ionViewDidLoad((上订阅了它

  ionViewDidLoad() {
    this.basket.getBasket().subscribe(res => {
      this.basketDraft = res;
    });
  }

在第 2 页中,我进行了一个新的网络调用,它将更新购物篮。但是当我回到Page1时,订阅的块没有被调用,视图也没有更新。页面不应该随着数据的观察而更新吗?

篮子

constructor(){
    //create an observable
    this.basketObservable = Observable.create(observer => {
      this._basketObserver = observer;
    });
}
    //return the observables
 getBasket() {
    return this.basketObservable;
}
    //publish to all subscribers
update(_basketDraft:any){
 this._basketObserver.next(_basketDraft)
}

如何确保第 2 页中的更改也会更新第 1 页?

您创建可观察量的方式不正确。每次执行subscribe()时,您都会覆盖observer,因此最终只会获得一个订阅。请改用Subjects

在你的 Basket.ts 中有一个代码,如下所示:

private _basketObserver = new Subject()
public basketObservable = this._basketObserver.asObservable();
constructor() {}
//return the observable
getBasket() {
    return this.basketObservable;
}
//publish to all subscribers
update(_basketDraft:any){
  this._basketObserver.next(_basketDraft)
}

相关内容

  • 没有找到相关文章

最新更新