离子角用户没有更新

问题描述 投票:0回答:1

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

我有两个页面,Page1和Page2订阅了同一个Observable。

在Page1中,我在ionViewDidLoad()上订阅了它

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

在第2页,我做了一个新的网络电话,将更新篮子。但是当我返回到Page1时,未调用订阅的块并且视图未更新。不应该在观察数据时更新页面吗?

Basket.ts

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)
}

如何确保Page2中的更改也会更新Page1?

angular ionic-framework ionic2 rxjs ionic3
1个回答
2
投票

您创建Observable的方式不正确。每次你做一个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)
}
© www.soinside.com 2019 - 2024. All rights reserved.