2017-09-20 7 views
0

私は作成したジオロケーションプロバイダを使用していますが、ここでは非同期です。ユーザーの所在地を知るには3〜5秒程度が必要です。私はコールバックの無名関数を使用しています。私はconsole.logのすべてが期待どおりに動作し、値を読み取っています。(ionic2 angular4)匿名コールバック関数から 'this'に返された値を返します。

しかし、この変数を使用して値をクラス変数に設定しようとすると、この変数は定義されていません。ここに私のコードです。 locationTrackerは私が作成したプロバイダです。

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; 
    }); 

}

問題は、これがrecoginzedされないように、私は、変数を緯度に値を渡すことができる方法は?

私はこれをコンストラクタ内に保持するつもりはありませんが、デモンストレーションの理由から、私はその時点でそれを持っています。 -

+0

@yurzui - あなたが言ったように、それは完全に働きました。ありがとうございました!!! –

答えて

0

私は誰かが同じを検索する場合には自分自身に答えるよ正確@yurzuiとしては、これに主な機能を変更することが期待通りに動作しますが、言った:

locationTracker.updateCoordinate((coords) =>{ 
     this.latitude = coords.latitude; 
     this.longitude = coords.longitude; 
}); 
関連する問題