亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gia:如何通過事件總線將事件對象傳遞給處理程序

Gia:如何通過事件總線將事件對象傳遞給處理程序

藍山帝景 2022-09-23 09:23:37
我正在學習如何使用 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]);    }  }}如果有人能解釋在這種情況下傳遞事件對象的概念和語法,那就太好了。
查看完整描述

1 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

事件處理程序將事件中的對象作為參數傳遞,因此您的處理程序可以從其函數簽名中獲取該對象作為變量,如下所示:

handleEventBusCall_callHeader(target) {
  console.log("The subpage-header was called.");
}

事件處理程序中的變量現在等于隨事件傳遞的對象。target

當你調用事件時,你不需要把你的參數放進去,那只會在傳遞它之前把它放到一個數組中,這會在以后讓你頭疼。文檔中的括號僅顯示 的第二個參數是可選的。[]eventbus.emit


查看完整回答
反對 回復 2022-09-23
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號