如何使用Ionic 3定义全局变量?

时间:2017-09-12 17:15:41

标签: ionic-framework ionic3

我的home.ts文件夹中有一个名为displayMap()的文件夹。我想在其他函数上使用pos变量。

我试着把它变成一个全局变量,但是有一些错误,在我的路上不能这样做。

我定义了一个globalPos变量,如下面的代码。

export class HomePage {

  globalPos: any;

尝试使用以下代码将pos值保存到globalPos。

displayMap(){
        let pos = {
          lat: position.coords.latitude,
          lng: position.coords.longitude
        };
        let info = new google.maps.InfoWindow;

        that.globalPos = pos;
}

displayMap()函数。

displayMap() {

    let that = this;


    let latLng = new google.maps.LatLng(40.106334, 29.510615);

    let mapOptions = {
      center: latLng,
      disableDefaultUI: true,
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
    };

    this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);

    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function (position) {
        let pos = {
          lat: position.coords.latitude,
          lng: position.coords.longitude
        };
        let info = new google.maps.InfoWindow;

        that.globalPos = pos;

        info.setContent('you are here!');
        info.setPosition(pos);
        info.open(that.map);

        that.map.setCenter(pos);
      })
    }
  }

1 个答案:

答案 0 :(得分:0)

此处的情况是您未使用Arrow Functions,因此在navigator.geolocation.getCurrentPosition()内,它将被限制为该功能的范围,并且它无法访问全局范围。

尝试更改该代码的代码:

navigator.geolocation.getCurrentPosition(position => {
  // YOUR CODE...
  this.globalPos = pos;
});

希望这有帮助。