2017-09-20 1 views
0

내가 만든 지오 로케이션 공급자를 사용하고 있습니다. 비동기적인 곳입니다. 사용자의 위치를 ​​파악하려면 약 3-5 초가 필요합니다. 콜백 익명 함수를 사용하고 있는데 console.log가 예상대로 작동하고 값을 읽을 때.(ionic2 angular4) 익명 콜백 함수에서 'this'로 반환 된 값을 전달합니다.

하지만이 값을 사용하여 클래스 변수에 값을 설정하려고하면이 값이 정의되지 않는다고 표시됩니다. 여기 내 코드가있다. locationTracker는 내가 만든 공급자입니다. 내가 변수를 위도 값을 전달할 수있는 방법이 recoginzed되지 않는

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { SettingsPage } from '../settings/settings' 
import { ListPage } from '../list/list' 
import { Geolocation } from '@ionic-native/geolocation'; 
import {Observable} from 'rxjs/Rx'; 
import { LocationTrackerProvider } from '../../providers/location-tracker/location-tracker'; 

export class HelloIonicPage { 
     public latitude:number = null; 
     public longitude:number = null; 

constructor(public navCtrl: NavController, public locationTracker: LocationTrackerProvider) { 

    locationTracker.updateCoordinate(function (coords) { 
     console.log(coords); // here it works perfectly 
     this.latitude = coords.latitude; // TypeError: this is underfinded 
     return coords; 
    }); 

은}

문제는 무엇입니까?

나는 이것을 생성자 내부에 유지할 계획이 없지만, 그 이유를 설명하기 위해 잠시 동안 거기에 있습니다. 나는 경우 누군가 자신을 응답하고있어

+0

@yurzui을 - 당신이 말한대로 완벽했다. 고맙습니다!!! –

답변

0

같은 검색 - 정확히 @yurzui 말했듯이,이 예상대로 작동에 주요 기능을 변경 :

locationTracker.updateCoordinate((coords) =>{ 
     this.latitude = coords.latitude; 
     this.longitude = coords.longitude; 
}); 
관련 문제