다음과 같은 백본보기에서 Google 스트리트 뷰를 렌더링하는 문제가 발생합니다.스트리트 뷰 및 백본 변수 범위 지정
문제는 processSVData 함수에서 this
이 App.DetailStreetView
의 인스턴스가 아닙니다. processSVData()
안에 console.log(this)
이 있으면 DOMWindow
개체가 생깁니다. this.panorama
에 액세스하려고 할 때 따라서, 나는
App.DetailStreetView = Backbone.View.extend({
initialize: function() {
this.latLng = new google.maps.LatLng(37.869085,-122.254775);
this.panorama = new google.maps.StreetViewPanorama(this.el);
},
render: function() {
var sv = new google.maps.StreetViewService();
sv.getPanoramaByLocation(this.latLng, 50, this.processSVData);
},
processSVData: function(data, status) {
if (status == google.maps.StreetViewStatus.OK) {
// calculate correct heading for POV
//var heading = google.maps.geometry.spherical.computeHeading(data.location.latLng, this.latLng);
this.panorama.setPano(data.location.pano);
this.panorama.setPov({
heading: 270,
pitch:0,
zoom:1,
});
this.panorama.setVisible(true);
}
},
});
이미 페이지에 밑줄이 있기 때문에 최상의 솔루션입니다. 필요한 경우/사용할 수있는 경우 네이티브 바인딩을 사용합니다. – adrian
@ amchang87 : Underscore의'_.bindAll'은'_.bind'를 기반으로하며, AFAIK, _.bind'는 사용 가능한 경우 기본 'Function.bind'를 사용합니다. –