Iは、以下のサービス・クラス、それは等プロバイダにシングルトンとして設定されているionic2サービスデータrention
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import { Geolocation } from 'ionic-native';
import { Platform } from 'ionic-angular';
import 'rxjs/Rx';
@Injectable()
export class TestService {
private appData: any;
constructor(private http: Http) {
console.log("service constructor called");
this.loadAppData();
}
loadAppData() {
let url = `/api/b502daab-2c7b-4cea-a00e-dc5aa6b58196`;
this.http.get(url).map(res => res.json()).subscribe(data => {
this.appData = data;
console.log(this.appData);
});
console.log(this.appData);
}
getAppData()
{
return this.appData;
}
}
加入出力内部にconsole.log(this.appData)それが1べきオブジェクトとして出力が定義されていない場合、それまでに設定してはいけませんか?事態を悪化させる。私は、オブジェクトを保持してサービスを持ってしようとしています
、私はコンストラクタで、私のページでloadappdataを呼び出しています
iは
export class HomePage {
constructor(public navCtrl: NavController, public testService: TestService) {
console.log(testService.getAppData());
};
}
を呼び出すことにより、オブジェクトを取得したいが、getappdataを、常に定義されていません私のページは必要に応じてデータを取得できます。私は、ページ全体でデータを共有するためにサービスをどのように利用すべきかという印象を受けました
しかし、複数のページからloadAppDataを複数呼び出しても、URLを複数回呼び出すことはありませんか?私はloadAppDataを一度呼び出すと、その結果を何度も何度も呼び出しなくても使用しようとしています – Zoinky
私はいくつかのコードを追加しました。欠点は、データを再読み込みするタイミングを制御できないことです。 代わりに、あなたのapp.componentに、私の最初の例のHomePageでデータを読み込んで、購読の成功関数ですべてのページでアクセスしたTestServiceメンバー変数にデータを割り当て、次にrootPageを割り当てます。 – LuJaks