javascript - typescript 中的范围变量

标签 javascript angular typescript ionic2 ionic3

我正在 Ionic 2 应用程序上使用 Angular 2 (Typescript)。我有一节课NewFavoriteSitePage拥有私有(private)属性(property)siteForm我可以在类方法中使用这个属性,但是当我在一个谷歌地图方法中时,这个变量是未定义的。变量的范围是什么或如何定义从两侧访问的变量?

declare var google;
......
export class NewFavoriteSitePage {
  .....
  private siteForm: FormGroup;

  loadMap(){
  //I can access to siteForm here!
  .....
      google.maps.event.addListener(marker, 'dragend', function(marker, siteForm){
        let newlatLng = marker.latLng; 
        console.log(this.siteForm); //Here this.siteForm is undefined
      });
  }

最佳答案

之所以没有在那里定义谷歌地图,是因为它是函数的回调,这使得“this”不再等于页面,将其放入变量中可以解决问题。

  private siteForm: FormGroup;

  loadMap(){
  var siteformFromPage=this.siteForm; //this should work
        google.maps.event.addListener(marker, 'dragend', function(marker, siteForm){
        let newlatLng = marker.latLng; 
        console.log(siteformFromPage);
      });
  }

编辑:如果你想要最新的值,你也可以尝试这样:

  private siteForm: FormGroup;

  loadMap(){
       var that=this; //cache that value of the page.

        google.maps.event.addListener(marker, 'dragend', function(marker, siteForm){
        let newlatLng = marker.latLng; 
        console.log(that.siteformFromPage);
      });
  }

关于javascript - typescript 中的范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44989849/

相关文章:

javascript - 如何最大化/最小化 iFrame?

angular - 无法解析 ApplicationModule : (? 的所有参数)

angular - 每次修改代码都需要部署ng-build吗

jquery - 找不到 'jquery' 的类型定义文件

angular - 网络 Storm 。如何在html文件中的插值表达式('{{'和 '}}')中添加空格?

javascript - AngularJS 如何在 $resource 实例上存储仅客户端信息

javascript - 第二个下拉菜单自动更改其值

javascript - 使用 DynamoDB 的 AWS Lambda 顺序问题

angular - 如何为 ag-grid 中的特定行着色?

typescript - 根据事件键缩小事件回调的类型