ฉันจะลบตัวฟังเหตุการณ์ 'bounds_changed' ในGoogle Maps API v3 ได้อย่างไร
google.maps.event.removeListener(_???_);
ฉันจะลบตัวฟังเหตุการณ์ 'bounds_changed' ในGoogle Maps API v3 ได้อย่างไร
google.maps.event.removeListener(_???_);
คำตอบ:
โดยปกติคุณสามารถค้นหาคำตอบสำหรับคำถามดังกล่าวได้ในเอกสารของ Google Maps API
ดังที่แอนดรูว์กล่าวว่า addListener จะส่งคืนหมายเลขอ้างอิงที่คุณสามารถใช้ในภายหลังเพื่อลบฟัง นั่นเป็นเพราะเหตุการณ์เดียวสามารถมีผู้ฟังได้หลายคนและหากต้องการลบออกคุณต้องบันทึกการอ้างอิงถึงผู้ฟังแต่ละคนที่แนบมาด้วย
นอกจากนี้ยังมีฟังก์ชั่นที่ลบผู้ฟังทั้งหมดในเวลาเดียวกัน:
clearListeners(instance:Object, eventName:string);
//In your case:
google.maps.event.clearListeners(map, 'bounds_changed');
นี่คือข้อมูลอ้างอิงของ Google Maps APIที่คุณสามารถอ่านได้
google.maps.event.clearListeners(map, 'idle')
ได้ผล แต่map.clearListeners('idle')
ไม่ ไวยากรณ์นั้นใช้ได้กับทุกอย่างใน API ( .addListener
ฯลฯ ) แปลก
addListener ส่งกลับหมายเลขอ้างอิงซึ่งคุณสามารถส่งต่อไปยัง removeListener ได้ในภายหลัง:
var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
google.maps.event.removeListener(listenerHandle);
ดูเหมือนว่าจะใช้ได้ในรุ่นปัจจุบัน
var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
// Handler code.
});
listenerHandle.remove();
listenerHandler.remove()
ใช้ได้กับผู้ฟังชั้นข้อมูลเช่นกัน - เช่นgoogle.maps.data.addListener
- เนื่องจากไม่มีgoogle.maps.data.removeListener
วิธีการที่กำหนดไว้
หากคุณไม่สามารถถือวัตถุ Listener ได้คุณสามารถลบ Listener ได้โดยตรงด้วย google.maps.event.clearListeners(objectListened, 'event');
เช่น: google.maps.event.clearListeners(map, 'bounds_changed');