我有以下功能。 除Push,Pop和Remove方法外,一切正常。這些方法應該由事件處理程序調用。這個事件是由google maps api發起的。如何從事件處理程序調用公共方法
問題是,當事件被觸發時,找不到這些方法。我有一個「推送未定義」錯誤消息。
我試過這個但這不起作用。
如何從事件處理程序調用公共方法?
謝謝你們
function Track(mapContainer) {
var map = mapContainer;
var points = new Array();
var isEditMode = false;
var clickListener;
this.Push = function(point) { ... }
this.Pop = function() { ... }
this.Remove = function(point) { ... }
//Enable/disable the marker placements
this.PlaceWaypoint = function(isPlacing) {
if (isPlacing != true) {
if (clickListener != null) {
google.maps.event.removeListener(clickListener);
clickListener = null;
}
} else {
clickListener = map.AddEvent("click", function(event) {
if (!IsDoubleClick()) {
var point = map.PlaceMarker(new WayPoint(event.latLng))
point.RemoveListener(function() { Remove(point); });
Push(point);
} else {
Pop();
}
});
}
}
}
它可能是更好的範圍這對函數的前面添加var,否則如果我們有多個Track實例,$ this變量將被覆蓋,並在錯誤的實例上調用方法。 – PatrikAkerstrand 2009-06-04 10:05:41