js dispatchEvent 的使用

dispatchEvent:dispatchEvent() 方法会向一个指定的事件目标派发一个Event,简单来说就是主动去触发一个事件,该事件可以是原有事件也可以是自定义事件。

1、dispatchEvent触发dom的点击事件(以vue项目为例子):

<template>
    <div>
        <div ref="parent" class="Parent" @click="onClick" />
    </div>
</template>
<script>
export default {
    name:'Parent',
    mounted(){
        this.$ref.parent.dispatchEvent(new Event('click')) // 动态去触发parent节点的click事件
    },
    methods:{
        onClick(e){
             console.log(e)
        }
    }
}
</<script>

2、dispatchEvent触发自定义事件,实现vue传参:

main.vue:

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false

window.EventTarget= new EventTarget(); // 给window上新增一个属性EventTarget值为EventTarget构造函数返回值
new Vue({
  render: h => h(App),
}).$mount('#app')

parent.vue:

<template>
    <div>
        <chi />
    </div>
</template>
<script>
import chi from"./component/chi.vue"
export default {
    name:'Parent',
    components:{chi},
    mounted(){
        EventTarget.addEventListener('up',(e)=>{
          console.log(e.detail)
        })
        EventTarget.addEventListener('up2',(e)=>{
          console.log(e.detail)
        })
    }
}
</<script>

chi.vue

<template>
  <div>
    <button @click="add">1</button>
    <button @click="add2">2</button>
  </div>
</template>
<script>
export default {
  name: "chi-dom",
  mounted() {},
  methods: {
    add() {
      EventTarget.dispatchEvent(
        new CustomEvent("up", { detail: { val: "我是参数1" } })
      );
    },
    add2() {
      EventTarget.dispatchEvent(
        new CustomEvent("up2", { detail: { val: "我是参数2" } })
      );
    },
  },
};
</script>

结果:

点击按钮1,会触发parent.vue的up事件绑定的函数,同理点击按钮2触发up2。parent 两个监听函数分别打印 事件派发时的传参。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值