2017-04-01 8 views
1

このタイプコードでは、public currentLocation : {lat: number, lng: number};を定義し、currentLocationの値をthis.geolocationの方法の中でconsole.log(this.currentLocation)に設定します。しかし、このブロックの外側でconsole.log(this.currentLocation)私は未定義になった。グローバル変数でどのように価値を得ることができますか?Ionic serveこのエラーを表示するIonic2

export class DetailsPage { 

    typeDetails: {}; 

    public currentLocation : {lat: number, lng: number}; 

    posOptions = { 
    enableHighAccuracy: true, 
    timeout: 20000, 
    maximumAge: 0 
}; 



    constructor(public navCtrl: NavController, 
      public navParams: NavParams, 
      private typeApi : TypeApi, 
      public geolocation : Geolocation) {} 


    ionViewDidLoad() { 
    let baseUrl ='https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=21.2150756,72.8880545&radius=500&type=hospital&key=AIzaSyBldIefF25dfjjtMZq1hjUxrj4T4hK66Mg'; 
    this.geolocation.getCurrentPosition().then((resp) => { 

     this.currentLocation ={ 
      lat :resp.coords.latitude, 
      lng :resp.coords.longitude 

     }; 

console.log(this.currentLocation); 


    }).catch((error) => { 
     console.log('Error getting location', error); 
    }); 


    console.log(this.currentLocation); 



console.log('ionViewDidLoad DetailsPage'); 

    //this.typeDetails = this.typeApi.getTypeDetails(); 
    //console.log(this.typeDetails); 

    this.typeApi.getTypeDetails().then(data => { 
    this.typeDetails = data; 
    console.log(this.typeDetails); 
    }); 
    } 


} 

答えて

1

したがって、それはあなたが知らない.B'cose promise外にログインすることはできません、あなたはasync自然にbelow.Dueを示すようresolveメソッド内console.log(this.currentLocation);を使用する必要がpromiseある瞬間にそれを価値があります。

this.geolocation.getCurrentPosition().then((resp) => { 

     this.currentLocation ={ 
      lat :resp.coords.latitude, 
      lng :resp.coords.longitude 

     }; 

    console.log(this.currentLocation);//here you have to use log method 

    }).catch((error) => { 
     console.log('Error getting location', error); 
    }); 
関連する問題