2015-08-27 11 views
8

निकालें Openlayers 3 में कैसे एक घटना श्रोता इस तरह संलग्न दूर करने के लिए:OpenLayers 3: घटना श्रोता

var a = map.on("pointerdrag",function (e) { 
      // event handler 
}); 

var b = map.on("pointerdrag",function (e) { 
      // event handler 
}); 

कैसे मैं केवल listner a और रखने b सक्रिय निकालते हैं?

उत्तर

11

आह इसकी सुंदर सरल है! इसकी API Docs: unByKey में, लेकिन ऑफ फ़ंक्शन के लिए बहुत काउंटर-अंतर्ज्ञानी नाम है।

map.unByKey(a); 

a श्रोता हटा देंगे लेकिन पर b रखें:

तो घटना श्रोता a दूर करने के लिए।

नोट: यह किसी भी ऑब्जेक्ट में ओपन लेयर 3 में काम करेगा जो किसी ईवेंट को उत्सर्जित करता है। परतों, इंटरैक्शन आदि जैसे ..

+1

नोट यदि आप नामित फ़ंक्शन का उपयोग कर रहे हैं, तो आप '.un' का भी उपयोग कर सकते हैं। 'समारोह onPointerDragOne() {/ * stuf */करना}' ' समारोह onPointerDragTwo() {/ * stuf */करना}' ' map.on (" pointerdrag ", onPointerDragOne);' ' map.on ("पॉइंटरड्राग", ऑन पॉइंटरड्रैग दो); ' 'map.un (" पॉइंटरड्राग ", ऑन पॉइंटरड्रैगऑन);' ' // केवल ऑन पॉइंटरड्रैग 2 रन होगा –

1

मैं बस एक ही चीज़ सोच रहा था, ऐसा लगता है कि off किसी ईवेंट श्रोता को हटाने का उचित तरीका होगा। आप इसे सीधे कॉलबैक में भी कॉल कर सकते हैं:

map.on("pointerdrag", function (e) { 
    map.unByKey(e); 
}); 

यह केवल इस विशिष्ट ईवेंट को हटा देना चाहिए।

+0

मैं ऐसा क्यों करूं? –

संबंधित मुद्दे