首页 > 解决方案 > 在 Javascript 中将附加数据传递给事件侦听器

问题描述

假设我有两种观点:

  1. 图库:显示草图列表,可通过以下方式访问www.mywebsite.com/#gallery
  2. 草图:显示单个草图,可通过以下方式访问www.mywebsite.com/#sketch/:id

每次用户单击图库中的草图时,我都想转到传递单击的草图的草图视图。

我怎样才能使这项工作?

我已经尝试过使用CustomEvents:

  onSketchClick = () => {
    const event = new CustomEvent('hashchange')

    event.additionalData = {
      sketchElement: this.element
    }

    window.dispatchEvent(event)
  }

它工作得很好,但是单击草图时 URL 不会改变。

我可以简单地添加

window.location.hash = '#sketch/${this.id}'

在里面onSketchClick,但这会触发hashchange事件监听器两次。

有什么方法可以在不使用CustomEvents 的情况下发送数据?

标签: javascriptsingle-page-application

解决方案


推荐阅读