繁体   English   中英

没有在骨干.js视图中定义'this'

[英]'this' is not defined within a backbone.js view

我试图将google maps api实现为ribs.js视图。 到目前为止,这是我用于自动完成功能的代码:

    address_search_listen: function(){

    //create a new auto complete object
    var map= this.map;
    var autocomplete = new google.maps.places.Autocomplete((document.getElementById('address_search')),{types: ['geocode'] });
        google.maps.event.addListener(autocomplete, 'place_changed',function(){
                var place = autocomplete.getPlace();
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(0, 0),
                    map: map,
                    title: "test"
                 });
        });
}

未在事件处理程序中定义变量映射。 我尝试了几件事,但没有成功。 有人可以帮我吗?

为了回答您的问题,最好了解您的主干视图结构。 具体来说,在其中创建google map实例以及在其中调用函数address_search_listen

如果您确定已创建google map实例并成为view对象的属性,则可能导致您拥有未定义变量map的可能原因是, this引用了其他对象而不是您的view对象。

如@Manuish上面建议的那样,使用_.bind设置处理程序的范围:

_.bind( this, function(){
  var place = autocomplete.getPlace();
  var marker = new google.maps.Marker({
    position: new google.maps.LatLng(0, 0),
      map: map,
      title: "test"
  })
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM