vue中兄弟组件之间传递数据,子组件调用父组件事件并传参

使用方法:
vm. e m i t ( " 事 件 名 ( 比 如 c l i c k , i n p u t 等 事 件 , 这 个 不 是 函 数 名 ) " , 形 参 ) : 触 发 当 前 实 例 上 的 事 件 。 附 加 参 数 都 会 传 给 监 听 器 回 调 。 − − − − 发 布 v m . emit( "事件名(比如click,input等事件,这个不是函数名)", 形参 ):触发当前实例上的事件。附加参数都会传给监听器回调。 ----发布 vm. emit("clickinput",)vm.on( “事件名”, callback回调函数避免this问题,使用箭头函数()=>{} ) :监听当前实例上的自定义事件。事件可以由 vm. e m i t 触 发 。 回 调 函 数 会 接 收 所 有 传 入 事 件 触 发 函 数 的 额 外 参 数 。 − − − − − 订 阅 v m . emit 触发。回调函数会接收所有传入事件触发函数的额外参数。 -----订阅 vm. emitvm.root:当前组件树的根 Vue 实例。

  1. 在main入口js中设置一个bus总线
// 创建一个Vue实例
new Vue({
  router,
  store,
  render: h => h(App),
  data: {
    // 空的实例放到根组件下,所有的子组件都能调用 "Bus总线" 订阅者发布者模式
    Bus: new Vue()
  }
}).$mount('#app');

2.发布

 //获取被选中的班级
    handleSelectionChange(vals) {
      this.ids = vals.map((id) => id.classesId);
      this.$root.Bus.$emit("myFun", this.ids);
      console.log(this.ids);
    },

3.订阅

mounted() {
    this.$root.Bus.$on("myFun", (ids) => (this.ids = ids));
  },

4.解析:每当 handleSelectionChange()函数执行,都会触发 e m i t ( " m y F u n " , t h i s . i d s ) ; emit("myFun", this.ids); emit("myFun",this.ids);on(“myFun”, (ids)监听这个函数,并调用自己中的回调函数。
子组件:handleCurrentChange(val = 1) { this.$emit("handleCurrentChange", val); },

  @handleCurrentChange="handleCurrentChange($event)"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值