Vue实现兄弟组件间的方法调用及回调

本文介绍了在Vue中如何实现兄弟组件之间的方法调用和回调。通过在父组件定义方法并传递给子组件,实现了从树形组件到房屋信息组件的新增方法调用,并展示了回调过程。文中提供了father.vue、tree.vue和houseInfo.vue的示例代码,强调了回调作为句柄可以穿透多层组件进行调用。实际开发中可能涉及更复杂的逻辑,如对话框关闭或确认条件判断。

Vue实现兄弟组件间的方法调用及回调

看兄弟间数据传递的看我写的这篇文章:vue实现兄弟组件间的实时通信

先说说我遇到的情况:
在这里插入图片描述

  1. 点击左侧树tree,需要调用右侧houseInfo组件中的新增方法,弹出新增窗口。
  2. 还需要拿到门牌号的回调(有可能删掉对话框,实际开发我还判断了用户按了确定才回调,比较复杂这里就不说了)

演示图:

点击houseInfo的新增效果
在这里插入图片描述

点击tree的新增效果
在这里插入图片描述

实现Implementation

1.首先在父组件引入子组件tree和houseInfo,在method定义方法handleCreate

2.父组件调用tree组件时传入@handleCreate=“handleCreate”,调用house组件传入ref=“house”

3.tree组件定义调用父组件的方法,houseInfo定义被调用方法

father.vue

<template>
  <el-row :gutter="20">
    <el-col :span="5"><div class="grid-content bg-purple " />
      <!--  树组件 -->
      <edit-tree :id="id" @handleCreate="handleCreate"/>
    </el-col>
    <el-col class="border-yes" :span="18"><div class="grid-content bg-purple-light" />
      <div class="dashboard-editor-container">
        <el-row :gutter="32">
          <el-col class="border-yes">
            <div class="chart-wrapper">
              <!-- 信息组件 -->
              <houseInfo ref="house" :id="id"/>
            </div>
          </el-col>
        </el-row>
      </div>
    </el-col>
  </el-row>
</template>
<script>
import EditTree from './component/editTree'
import HouseInfo from './component/houseInfo'
export default {
  name: 'father',
  components: {
    EditTree,
    HouseInfo
  },
  data() {
    return {
      id: 1
    }
  },
  methods: {
    handleCreate(data, callback) {
      this.$refs.house.handleCreate(data, callback)
    }
  }
}
</script>

tree.vue

  methods: {
    append(data, node) {
      this.$emit('handleCreate', [node.data.id, node.parent.data.id], (loading) => {
        if (loading) {
          // 根据回调值操作
          // TODO
        }
      })
    }

houseInfo.vue

 methods: {
    handleCreate(data, callback) { //被调用方法
      if (data) {
        this.temp.floor = data[0]
        this.temp.building = data[1]
      }
      callback(true) //想回调什么数据都可以
    }
  }
总结

callback其实就是一个句柄,只要能传递无论隔着多少层,都能调用。

这里我只是演示了兄弟组件间的方法调用以及回调。实际开发需要考虑对话框是点关闭还是确认,逻辑稍微麻烦点,想了解的在下方评论,我立马赶过来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值