[英]'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.