2016-04-03 89 views
0

我想创建一个函数来获取位置值低于使用共享服务将它传递给所有的组件是我ngOnInit功能打字稿逻辑问题

this.input = document.getElementById('google_places_ac'); 
     var autocomplete = new google.maps.places.Autocomplete(this.input, { types: ['(cities)']}); 
     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
      var place=autocomplete.getPlace(); 
      this.setValue(place.address_components[3].long_name, place.address_components[2].long_name, place.address_components[1].long_name); 

     }); 

问题它不承认this.setvalue函数与我的共享服务或任何变量与this.variable共享值,它的JavaScript“这个”问题。并且我甚至无法让我的构造函数使用这个函数,它在getElmentById处引发错误。

有带箭头的功能,所有的解决方案,但我不知道如何使用它在这种情况下,请帮我..

回答

1

place_changed内-callback关键字this点自动完成实例。

你需要创建一个闭包:

var instance = this, 
    autocomplete; 
instance.input = document.getElementById('google_places_ac'); 
autocomplete = new google.maps.places.Autocomplete(instance.input, { 
        types: ['(cities)']}); 

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    var place=this.getPlace(); 
    instance.setValue(place.address_components[3].long_name,   
        place.address_components[2].long_name, 
        place.address_components[1].long_name); 
}); 
+0

VAR实例=这一点;正在工作,我没有得到任何错误,但它没有更新视图上的值应该为此创建一个新的问题,或者我应该更新与我的sharedservice功能的问题? – Ironsun

+0

您好我已经创建了新的问题,如果你能帮助我,它会很好http://stackoverflow.com/questions/36387480/value-not-updating-in-the-view-after-data-update-angular2-and -typescript – Ironsun