0

JavaScript スコープに関する質問です。3 つのファイルがあります (関連性があるかどうかはわかりませんが、Backbone を使用しています)。最初のファイルは、Google マップのカスタム情報ウィンドウを定義します。2 番目のファイルは、Google マップ マーカーを定義し、それに情報ウィンドウを適用します。最後に、3 番目のファイルは、マーカーとその他のページ要素をマップに追加します。

3 番目のファイルで、情報ウィンドウでのマウスオーバー イベントをリッスンし、発生したときに他のページ要素のメソッドを呼び出せるようにしたいと考えています。ただし、私の JavaScript は次の方法を知るには十分ではありません。

// InfoWindow.js defines the info window & adds a mouseover event
AI.InfoWindow.prototype = new google.maps.OverlayView;
AI.InfoWindow.prototype.onAdd = function() {
  this.listeners = [
    google.maps.event.addDomListener(this.$content.get(0), "mouseover", function (e) {
       clearTimeout( window.hidePopupTimeoutId );
    }) ...
  ];
};

// Marker.js defines the map marker and adds the infowindow 
AI.Marker = function() {
  google.maps.Marker.prototype.constructor.apply(this, arguments);
  this.infoWindow = new AI.InfoWindow();
}

// Home.js creates the markers for the map
var myOtherHomePageElement = new AI.OtherHomePageElement();
var marker = new AI.Marker({
   data: entity 
});
// how to listen to infowindow events here?

私の質問は次のとおりです。情報ウィンドウのマウスオーバーは正常に機能していますmyOtherPageElement.start()が、マウスオーバーがあるたびに呼び出すことができるようにしたいと考えています。Home.js ファイル内からこれを行うにはどうすればよいですか?

4

1 に答える 1

0

Backbone.triggerとを使用しBackbone.onて、マウスオーバーが発生したときに Home.js のオブジェクトに通知できます。

// InfoWindow.js defines the info window & adds a mouseover event
AI.InfoWindow.prototype = new google.maps.OverlayView;
AI.InfoWindow.prototype.onAdd = function() {
  this.listeners = [
    google.maps.event.addDomListener(this.$content.get(0), "mouseover", function (e) {
       clearTimeout( window.hidePopupTimeoutId );
       Backbone.trigger('infowindow:mouseover', e);
    }) ...
  ];
};

// Marker.js defines the map marker and adds the infowindow 
AI.Marker = function() {
  google.maps.Marker.prototype.constructor.apply(this, arguments);
  this.infoWindow = new AI.InfoWindow();
}

// Home.js creates the markers for the map
var myOtherHomePageElement = new AI.OtherHomePageElement();
var marker = new AI.Marker({
   data: entity 
});
Backbone.on('infowindow:mouseover', myOtherHomePageElement.start, myOtherHomePageElement);
于 2013-04-12T15:43:15.910 に答える