我試圖將從http
請求獲得的值推送到本地聲明變量userLat & userLng
,並從另一個函數訪問變量,但得到的結果爲undefined
。 userLat & userLng
已成功檢索。嘗試使用return this.userLat & this.userLng
但失敗,請指出我是否犯了錯誤。如何將函數的值傳遞給函數?
以前使用承諾工作。有很多頭痛。有沒有更簡單的方法來獲取數據?
任何幫助和建議表示讚賞。感謝提前:)
map.ts
export class GoogleMapsProvider {
userLat:any;
userLng:any;
constructor(
public http: Http,
) {
}
load(){
this.http.post()
.map(res => res.json())
.subscribe(data =>
{
this.userDetails = data[0];
this.userLat = this.userDetails.ListerLat;
this.userLng = this.userDetails.ListerLng;
console.log(this.userLat); // successfully return userLat
console.log(this.userLng); // successfully return userLng
//tried return this.userLat & this.userLng
}
}
calculate(locations) {
console.log(this.userLat); //returned undefined
console.log(this.userLng); //returned undefined
let usersLocation = {
lat: this.userLat,
lng: this.userLng
};
}
使用承諾
load(){
if(this.data){
return Promise.resolve(this.data);
}
return new Promise(resolve => {
this.http.get('../example.json').map(res => res.json()).subscribe(data => {
this.data = data;
resolve(this.data);
});
});
}
你怎麼叫'calculate'功能? – MysterX
好的。對於那個很抱歉。將來會注意到。 我在另一個函數中調用'calculate'函數。以前我使用硬編碼'userLat&userLng',它工作正常。現在我想將其應用於動態數據。 – aaa
這對我來說似乎是一個範圍問題,您應該使用let _self = this;在你的加載方法中。然後通過_self.userLng = value設置userLng; – user3492940