我有一個視圖,其中包含一個谷歌地圖可通過this.map在視圖範圍內訪問。世界上一切都很好。我如何綁定谷歌地圖geocoder.geocode()回調函數
接下來,我想通過更新在我看來事件的地圖位置。要做到這一點,我需要文本輸入,使用google.maps.Geocoder.geocode(),然後通過更新位置:
setMapLocation:功能(位置){
_.bind(this.setMapLocationCallback, this);
console.log(this);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': location}, this.setMapLocationCallback);
},
的的console.log(此)這裏表明我的觀點的範圍,與this.map正常訪問。請注意,我的回調明確綁定到這個位置。這裏的回調:
setMapLocationCallback: function (results, status) {
console.log('this in the callback');
console.log(this);
if (status == google.maps.GeocoderStatus.OK) {
this.map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: this.map,
position: results[0].geometry.location
});
this.mapCanvas.css({visibility: 'visibile'});
} else {
this.mapCanvas.css({visibility: 'hidden'});
}
},
的問題是,回調的console.log內(本)表明這的作用範圍是Window對象即使我約束,明確視圖對象的這範圍。
我需要在回調中訪問this.map,因爲我可能在一個頁面上有多個地圖,需要區分我正在談論的是哪一個。
如何綁定這個回調到合適的範圍是什麼?或者,有沒有更好的方法來做到這一點?
我正在使用backbonejs和underscorejs,但這應該是一個相當普遍的問題。
由於提前, 大衛
的
this
範圍這就是訣竅!謝謝你,先生!我已經聽到這樣的事情被「直覺」語法JS的未來版本的傳聞來處理。期待看到如何發揮。 –