我有以下服務類,其被在提供商等設定爲單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)的對象,因爲它應該在一個輸出未定義之後,不應該由它設置?使事情變得更糟。
我呼籲構造和在我的網頁上loadappdata我想通過調用
export class HomePage {
constructor(public navCtrl: NavController, public testService: TestService) {
console.log(testService.getAppData());
};
}
獲取對象,但getAppData總是不確定的,
我想有一個服務保留的對象所以我的網頁可以根據需要從中獲取數據。我的印象是,這應該如何利用服務跨頁面共享數據
但如果我多次調用loadAppData從多個頁面不會調用該URL多次?我正在嘗試調用loadAppData一次,並使用該結果,而不必一次又一次地調用服務。 – Zoinky
我添加了一些代碼。缺點是您無法控制何時重新載入數據。 你可以做什麼,而不是你的app.component,加載數據,你在我的第一個例子的主頁中,並在訂閱成功函數分配數據到一個TestService成員變量,您可以訪問每個頁面,然後分配rootPage。 – LuJaks