私はイオン3アプリケーションを構築していますが、私は奇妙な問題に直面しています。私が示すこのページではngデータをリフレッシュしないでください
<ion-header>
<ion-navbar>
<ion-title>{{navParams.get('name')}}</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-segment [(ngModel)]="view">
<ion-segment-button value="info">
Info
</ion-segment-button>
<ion-segment-button value="recensioni">
Recensioni
</ion-segment-button>
</ion-segment>
<div [ngSwitch]="view">
<div id="info">
<div *ngSwitchCase="'info'">
<div class="flexBox">
<div *ngIf="details != undefined" [style.background]="(details.open_now) ? 'green' : 'red'"></div>
<span *ngIf="details != undefined && details.open_now">Aperto</span>
<span *ngIf="details != undefined && !details.open_now">Chiuso</span>
<ion-icon name="call" (click)="call()"></ion-icon>
<ion-icon name="navigate" (click)="navigateTo()"></ion-icon>
</div>
</div>
<div #map2 [style.height]="(view == 'info') ? '35vh' : '0px'"></div>
<div *ngSwitchCase="'info'" id="slides">
<ion-slides *ngIf="details != undefined">
<ion-slide *ngFor="let img of details.photos" (click)="openImg($event)">
<img [src]="'https://maps.googleapis.com/maps/api/place/photo?key=AIzaSyD_9bj_Ao6nklX7PWrM_1E-iDH4EPVWV6A&maxwidth=1600&photoreference=' + img.photo_reference" />
</ion-slide>
</ion-slides>
</div>
</div>
<div id="rec">
<div *ngSwitchCase="'recensioni'">
<ion-list-header>
<div id="avg">
<div>
<span item-start text-wrap>Voto Google: </span>
<span item-end text-wrap class="end" *ngIf="navParams.get('rating') != undefined">{{navParams.get('rating')}}/5</span>
<span item-end text-wrap class="end" *ngIf="navParams.get('rating') == undefined">Nessuna valutazione!</span>
</div>
<div>
<span item-start text-wrap class="start">Voto Tripadvisor: </span>
<ion-spinner item-end text-wrap class="end" *ngIf="!loaded" name="dots"></ion-spinner>
<span item-end text-wrap class="end" *ngIf="loaded && rating != undefined">{{rating}}/5</span>
<span item-end text-wrap class="end" *ngIf="loaded && rating == undefined">Nessuna valutazione!</span>
</div>
</div>
</ion-list-header>
<ion-list>
<ion-item *ngFor="let recensione of reviews">
<div class="center">
<ion-avatar>
<img [src]="recensione.profile_photo_url">
</ion-avatar>
</div>
<p class="name">{{recensione.author_name}}</p>
<div class="rating">
<div class="star-ratings-sprite">
<span [style.width]="(100*recensione.rating/5) + '%'" class="star-ratings-sprite-rating"></span>
</div>
</div>
<div *ngIf="recensione.title != undefined" class="title">
<span text-wrap>{{recensione.title}}</span>
</div>
<span class="review" text-wrap>{{recensione.text}}</span>
<div class="date">
<p>{{recensione.relative_time_description}}</p>
</div>
</ion-item>
</ion-list>
<ion-spinner *ngIf="!loaded"></ion-spinner>
<ion-infinite-scroll (ionInfinite)="scrapeNext($event)" threshold="1000px">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</div>
</div>
</div>
</ion-content>
:それは、次の1から除いて、自分のアプリケーション内のすべてのページのためだけで正常に動作し https://www.npmjs.com/package/ionic-cache
: 私は最近、データキャッシュを有効にするために私のアプリにこのモジュールを追加しました特定のレストランに関する情報やレビュー(レビューはイオンリスト内に表示されます)。 はレビューを取得するには、私は.TSファイルに次のコードを使用:
this.scraper.getTaReviews(this.navParams.get('name'))
.subscribe(data => {
console.log(data)
if (data != "no data") {
this.placeId = data.placeId;
this.risId = data.risId;
this.hasNext = data.hasNext;
this.rating = data.avgRating;
this.reviews = this.reviews.concat(data.reviews);
console.log(this.reviews);
}
this.loaded = true;
})
はもちろん、私は、コンストラクタで空の配列であることをレビュー変数を開始しました。コメントのない部分は新しいものである、とコメント部分は古い作業です
getTaReviews(ris: string) {
let request = this.http.get(this.hostname + ':8090/tarev?ris=' + ris + '&citta=' + this.share.getProvincia()).map(res => res.json()).retry();
return this.cache.loadFromObservable(ris + "-" + this.share.getProvincia(), request);
// return this.http.get(this.hostname + ':8090/tarev?ris=' + ris + '&citta=' + this.share.getProvincia()).map(res => res.json()).retry();
}
:
これは、HTTP呼び出しを行うために呼び出される関数です。 私の問題は、初めてページを開いてデータを取得すると、すべてがうまく動作し、イオンリストのレビューが正しく表示されることです。しかし、キャッシュされたデータを使用すると、レビュー配列に正しいデータが含まれていても、リスト内のイオンアイテムにはデータが格納されません(コンソールログにチェックインしました)。前にも述べたように、イオンキャッシュを使用しないと正常に動作しますが、なぜこの動作がこのページにのみ影響するのかを説明することはできません。さらに、(レビュー以外の)キャッシュされたデータはすべて正しく表示され、ngForステートメントだけで問題があるように見えます。