Google マップの情報ウィンドウ ( https://developers.google.com/maps/documentation/javascript/examples/infowindow-simple ) にリンクまたはボタンを追加し、sencha touch で「タップ」イベントを処理しようとしています。コントローラ。コードが機能しません。基本的に私がやろうとしているのは、ネイティブ Javascript でイベントを発生させ、それをコントローラーでリッスンすることです。
ここでは、マーカーに情報ウィンドウを追加します。
google.maps.event.addListener(marker, 'click', function() {
me.selectedMarker = marker;
// info window
var contentString = "'<div id='content'>"
+ "<h1 id='firstHeading'>{0}</h1>"
+ "<div id='bodyContent'>{1}</div>" +
"<div id='detailLink' onClick=\"fireEvent(this, 'tap')\" style='text-decoration: underline'>" +
"TAP ME TO OPEN THE DETAIL" +
"</div>" +
"</div>"
contentString = contentString.format(punto.label, punto.descBreve);
if (me.infowindow) {
me.infowindow.close();
}
me.infowindow = new google.maps.InfoWindow({
content : contentString
});
me.infowindow.open(me.getMap(), marker);
});
私のindex.htmlのfireEvent関数は、例外なく実行されます:
function fireEvent(element, event) {
if (document.createEventObject) {
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on' + event, evt)
} else {
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
コントローラーのイベント ハンドラー (呼び出されることはありません)
control : {
'#detailLink' : {
tap : function(){ alert('tapped')},
click : function(){ alert('clicked')}
}
}
一度に表示される情報ウィンドウは 1 つだけです。