如何在另一页上反映可观察量的变化。
我有两个页面,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?
您创建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)
}