【问题标题】:ionic angular subscribers not being updated离子角度订阅者未更新
【发布时间】:2019-04-25 06:24:03
【问题描述】:

如何在另一个页面上反映 observable 的变化。

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

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

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

Page2 中,我进行了新的网络调用,它将更新购物篮。 但是当我回到 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】:

您创建 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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2021-12-27
    • 2011-08-21
    相关资源
    最近更新 更多