ईवेंट बबलिंग आम तौर पर कैसे काम करता है और क्या यह ईवेंट प्रचार का पर्याय है?


11

मैं घटना-संचालित (उप) प्रणालियों में घटना प्रेषण के सामान्य कामकाज और सिद्धांतों के आसपास अपना सिर लपेटने की कोशिश कर रहा हूं।

हालाँकि मैंने उदाहरण के लिए जावास्क्रिप्ट, फ्लैश (एक्टेशनस्क्रिप्ट 2 और 3) के लिए कुछ अवसरों पर इसका इस्तेमाल किया है और एक समय में अपने लिए एक साधारण घटना को PHP में डिस्पैचिंग सिस्टम भी बना दिया है, मैं वास्तव में कभी इवेंट बबलिंग और / या नहीं समझ पाया हूँ प्रचार है कि अच्छी तरह से।

पहला सवाल:
क्या ईवेंट प्रचार के लिए इवेंट बुबलिंग पर्यायवाची है?

दूसरा प्रश्न:
क्या मैं अपनी समझ में सही हूं कि जब कोई घटना "बुलबुले" होती है, इसका मतलब यह है कि यह वस्तुओं के पदानुक्रम को "स्थानांतरित" कर देता है?

तीसरा और सबसे महत्वपूर्ण प्रश्न:
यदि प्रश्न 2 में मेरी समझ सही है; आम तौर पर लागू की जाने वाली वस्तुओं के पदानुक्रम में यह "चलती" कैसे है?
क्या आम तौर पर इसका मतलब यह है कि मूल वस्तु अपने माता-पिता के लिए उसी घटना को "फिर से संगठित करती है" (जब तक वह मूल वस्तु तक नहीं पहुंचती)? और यदि ऐसा है तो; क्या पदानुक्रम में इन सभी वस्तुओं को इन घटनाओं के लिए अपने बच्चों को सुनने की ज़रूरत है, या क्या मुझे घटना बुदबुदाहट के बारे में मेरी समझ में कुछ महत्वपूर्ण सिद्धांत याद आ रहा है, जहां माता-पिता को बच्चे वस्तु घटनाओं के श्रोताओं के रूप में स्वयं को पंजीकृत करने की कोई आवश्यकता नहीं है?

यदि आप इन मूल सिद्धांतों को कुछ सरल छद्म कोड के माध्यम से समझा सकते हैं, तो मैं आभारी हूं।


1
एक संबंधित लेख: घटना क्रम
जोनास

जवाबों:


7

पहला सवाल: क्या ईवेंट प्रचार के लिए इवेंट बुबलिंग पर्यायवाची है?

सं बबलिंग एक घटना प्रसार का एक रूप है, लेकिन इसे एक पर्याय के रूप में इस्तेमाल नहीं किया जा सकता है। किसी घटना को चारों ओर से गुजारने के लिए प्रचार एक सामान्य शब्द है। बबलिंग इवेंट प्रचार की एक विशिष्ट रणनीति है।

दूसरा प्रश्न: क्या मैं अपनी समझ में सही हूं कि जब कोई घटना "बुलबुले" होती है, इसका मतलब यह है कि यह वस्तुओं के पदानुक्रम को "स्थानांतरित" कर देता है?

हाँ। बबलिंग का अर्थ है कि यह टनलिंग के विपरीत पदानुक्रम को ऊपर ले जाता है , जिसका अर्थ है कि यह शीर्ष तत्व नीचे या मार्ग से जाता है , जिसका अर्थ है कि आप प्राप्त करने वाली घटना को प्राप्त करने वाली अगली वस्तु कुछ भी हो सकती है।

तीसरा और सबसे महत्वपूर्ण प्रश्न: यदि प्रश्न 2 में मेरी समझ सही है; आम तौर पर लागू की जाने वाली वस्तुओं के पदानुक्रम में यह "चलती" कैसे है?

बहुत आसान। आपके दृश्य पदानुक्रम में नियंत्रणों का उनके माता-पिता / उनके शीर्ष स्तर के दृश्य का संदर्भ होता है या इसे कहीं प्राप्त कर सकते हैं। इसलिए जब वे किसी घटना को पकड़ते हैं, तो वे इसके बारे में अपने माता-पिता को सूचित करते हैं, जो इसके बारे में इसके माता-पिता को सूचित करता है आदि।

छद्म कोड किसी भी यूआई नियंत्रण के लिए इस तरह है:

OnEvent(SomeEvent event)
{
   CallHandlersForEvent(event);
   if(HasParent && event.ContinueBubbling == true)
   {
       Parent.OnEvent(event);
   }
}

ब्लूबेरीफील्ड्स ने कहा कि इसे प्रत्यक्ष अभिभावक की आवश्यकता नहीं है जो अगले कार्यक्रम को प्राप्त करता है। आप इसे भी लागू कर सकते हैं:

OnEvent(SomeEvent event)
{
    CallHandlersForEvent(event);
    NextControl = VisualTree.GetVisualParent(this);
    if(NextControl != null && event.ContinueBubbling == true)
    {
       NextControl.OnEvent(event);
    }
}

+1 छद्म कोड मेरे लिए बहुत मायने रखता है, धन्यवाद! (जैसा कि आपके बाकी जवाब, वैसे ही है।)
डिसेंट डब्बल

@fireeyedboy: आप का स्वागत =)
फाल्कन

1

पहला उत्तर:

ईवेंट बबलिंग एक विशिष्ट एल्गोरिथ्म गाइडिंग ईवेंट प्रचार है।

दूसरा जवाब:

नहीं, बुदबुदाहट किसी भी पदानुक्रम से संबंधित नहीं है। एल्गोरिदम को ठीक से काम करने के लिए ऑब्जेक्ट्स को आंतरिक रूप से या कहीं और नहीं दिखाया जाता है। आदर्श रूप से, जब कोई घटना बुदबुदाती है, तो यह स्क्रीन पर बाहरी दृश्य तत्व से स्क्रीन पर सबसे बाहरी दृश्य तत्व से बाहर की ओर फैलता है।

तीसरा उत्तर:

कार्यान्वयन विवरण बहुत भिन्न हो सकते हैं यह इस बात पर निर्भर करता है कि प्रत्येक (ब्राउज़र) के इंटर्न कैसे लागू होते हैं। bubblingएल्गोरिथ्म स्क्रीन पर दृश्यों पर निर्भर करता है। यदि कोई इनकैप्सुलेटिंग तत्व एक आंतरिक तत्व की तुलना में वंशानुक्रम पदानुक्रम पर अधिक है, तो उदाहरण के लिए भाषा में मानक विरासत तंत्र का उपयोग करके बुदबुदाहट को लागू किया जा सकता है। लेकिन यह जरूरी नहीं है कि सच है - आपके पास एक विशेष तंत्र हो सकता है जो आंतरिक संरचना और स्क्रीन पर उनकी दृश्यता दोनों की व्याख्या कर सकता है, और आंतरिक संगठन की अनदेखी करते हुए एल्गोरिदम के अनुसार घटनाओं का प्रचार कर सकता है।


1
आप क्यों कह रहे हैं: "बुदबुदाहट किसी भी पदानुक्रम से संबंधित नहीं है"। मेरी राय में यह है पदानुक्रम के बिना कोई बुदबुदाती नहीं है। किसी प्रकार का वृक्ष होना चाहिए। क्या आप पेड़-संरचना के बिना बुदबुदाती का उदाहरण दे सकते हैं? आपका उदाहरण "सबसे आंतरिक से बाहरी दृश्य तत्व तक" बस इतना ही है - एक दृश्य पदानुक्रम।
फाल्कन

1
निश्चित रूप से, आप इसे एक पदानुक्रम के रूप में व्याख्या कर सकते हैं यदि आप वास्तव में चाहते हैं। मैं इसे एक शिथिल युग्मित ग्राफ़ के रूप में सोचना पसंद करता हूं, जिसमें कुछ दृश्य और कुछ गैर-दृश्य तत्व शामिल हैं।
ब्लूबेरी

2
लेकिन तब बुदबुदाती हुई सादृश्यता विफल हो जाती है। क्योंकि एक ग्राफ में घटना को कहीं भी रूट किया जा सकता है जबकि बबलिंग स्पष्ट रूप से नीचे से ऊपर तक जाती है।
फाल्कन

मुझे लगता है कि आप इसे अब मनमाने ढंग से ग्राफ़ में बुदबुदाई नहीं कह सकते। इसे "ईवेंट रूटिंग" कहा जाना चाहिए फिर इम्हो।
फाल्कन

1
मेरा मानना ​​है कि फाल्कन कुछ उचित बिंदु बनाता है। उचित लगता है कि बुदबुदाती के रूप में कुछ है जो ऊपर ले जाता है (एक पदानुक्रम)।
निर्णायक डब्बल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.