Saya mencoba untuk membungkus kepala saya di sekitar pekerjaan umum dan prinsip-prinsip pengiriman acara dalam sistem (sub-) yang didorong oleh peristiwa.
Meskipun saya telah menggunakannya pada beberapa kesempatan misalnya Javascript, Flash (Actionscript 2 dan 3) dan bahkan telah membuat sistem pengiriman acara sederhana dalam PHP untuk saya sendiri pada suatu waktu, saya tidak pernah benar-benar mengerti acara yang menggelegak dan / atau propagasi dengan baik.
Pertanyaan pertama:
Apakah sinonim peristiwa menggelembung untuk propagasi acara?
Pertanyaan kedua:
Apakah saya benar dalam pemahaman saya bahwa ketika suatu peristiwa "menggelembung", ini berarti bahwa ia "naik" ke atas hierarki objek?
Pertanyaan ketiga dan paling penting:
Jika pemahaman saya dalam pertanyaan 2 benar; bagaimana "memindahkan" hierarki objek-objek ini secara umum diimplementasikan?
Apakah itu umumnya berarti bahwa orangtua objek "redispatches" acara yang sama untuk yang tua (sampai mencapai obyek root)? Dan jika demikian; apakah semua objek dalam hierarki perlu mendengarkan anak-anak mereka untuk acara ini, atau apakah saya kehilangan sesuatu yang penting dalam pemahaman saya tentang peristiwa yang menggelegak, di mana tidak perlu membiarkan objek orangtua mendaftarkan diri mereka sebagai pendengar peristiwa objek anak?
Jika Anda bisa mengilustrasikan prinsip-prinsip dasar ini dengan menggunakan beberapa kode pseudo sederhana, saya akan sangat berterima kasih.
sumber
Jawaban:
Tidak. Bubbling adalah bentuk propagasi acara, tetapi tidak dapat digunakan sebagai sinonim. Propagasi adalah istilah umum untuk melewati suatu peristiwa. Bubbling adalah strategi spesifik propagasi acara.
Iya. Bubbling berarti naik hierarki, tidak seperti tunneling , yang berarti naik dari elemen atas ke bawah atau routing , yang berarti objek berikutnya untuk menerima acara dapat berupa apa pun yang Anda pilih.
Sangat mudah. Dalam hierarki visual Anda kontrol memiliki referensi ke orang tua mereka / visual tingkat atas mereka atau bisa mendapatkannya di suatu tempat. Jadi ketika mereka menangkap suatu peristiwa, mereka hanya memberi tahu orang tuanya tentang hal itu, yang memberi tahu orang tuanya tentang hal itu dll.
Kode semu seperti ini untuk kontrol UI apa pun:
Seperti yang dikatakan blueberryfields, orang tua tidak langsung yang menerima acara tersebut. Anda dapat menerapkan seperti ini juga:
sumber
Jawaban pertama:
Gelembung peristiwa adalah salah satu algoritma spesifik yang membimbing perambatan acara.
Jawaban kedua:
Tidak, menggelegak tidak selalu terkait dengan hierarki apa pun. Bagaimana objek diwakili secara internal atau di tempat lain tidak masalah bagi algoritma untuk bekerja dengan baik. Idealnya, ketika suatu peristiwa meletup, ia mengembang ke luar dari elemen yang terlihat paling dalam di layar, hingga ke elemen yang terlihat paling luar di layar.
Jawaban ketiga:
Detail implementasi dapat sangat bervariasi tergantung pada bagaimana internal masing-masing (browser) diimplementasikan. The
bubbling
algoritma tergantung pada visual di layar. Jika elemen enkapsulasi lebih tinggi pada hierarki warisan daripada elemen dalam, gelembung mungkin diimplementasikan menggunakan mekanisme pewarisan standar dalam bahasa, misalnya. Tapi itu belum tentu benar - Anda mungkin memiliki mekanisme khusus yang dapat menafsirkan struktur internal dan visibilitasnya di layar, dan menyebarkan peristiwa sesuai dengan algoritma sementara mengabaikan organisasi internal.sumber