我正在學習如何使用 Gia(對于小型 Web 項目),我無法了解如何通過 Gia 的事件總線將事件對象從一個組件傳遞到另一個組件的事件處理程序。下面是兩個基本組件,通過事件總線進行通信:class navigation extends Component { constructor(element) { super(element); // // Define "Sub-components" this.ref = { navLinks: [], }; } mount() { // // Listen for clicks on nav.-links for (let i = 0; i < this.ref.navLinks.length; i++) { const link = this.ref.navLinks[i]; link.addEventListener("click", this.handleNavLinkClick.bind(this)); } } handleNavLinkClick(e) { // // Emit event let clickedLink = e.target; if (clickedLink.classList.contains("callHeader")) { eventbus.emit("callingSubpageHeader"); } }}class subpageHeader extends Component { mount() { // // Listen for call from eventbus eventbus.on( "callingSubpageHeader", this.handleEventBusCall_callHeader.bind(this) ); } // // Eventbus handler(s) handleEventBusCall_callHeader() { console.log("The subpage-header was called."); }}事件的發出和第二個組件中處理程序的后續調用工作正常。但是,我想在調用處理程序時將其他信息從第一個組件傳遞到第二個組件。Gia 文檔提到事件總線的 emit 方法可以將事件對象傳遞給處理程序:調用以前使用相同事件名稱注冊的任何處理程序??蛇x事件對象可用作參數,該參數作為參數傳遞到處理程序中。eventbus.emit('eventName'[, eventObject]);不幸的是,沒有示例,我不知道傳遞對象是如何工作的。我嘗試將“某物”(在本例中為第一個組件中單擊的鏈接)添加到 emit 函數的調用中,但不知道如何/在哪里可以讀取/使用它,也不知道將某些內容作為事件傳遞對象是否以這種方式工作:class navigation extends Component { constructor(element) { super(element); // // Define "Sub-components" this.ref = { navLinks: [], }; } mount() { // // Listen for clicks on nav.-links for (let i = 0; i < this.ref.navLinks.length; i++) { const link = this.ref.navLinks[i]; link.addEventListener("click", this.handleNavLinkClick.bind(this)); } } handleNavLinkClick(e) { // // Emit event if (clickedLink.classList.contains("callHeader")) { eventbus.emit("callingSubpageHeader", [e.target]); } }}如果有人能解釋在這種情況下傳遞事件對象的概念和語法,那就太好了。
Gia:如何通過事件總線將事件對象傳遞給處理程序
藍山帝景
2022-09-23 09:23:37