vue实现父组件获取子组件的方法或者属性值

本文介绍了在Vue中利用$ref实现父组件调用子组件方法,以控制子组件弹窗的显示。通过在父组件上绑定点击事件并传递参数,子组件内部定义方法处理显示内容,确保组件间的低耦合,提高代码的可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue的本质就是每一块只负责自己这一块的工作,这样更容易维护。
这里主要使用了vue的$ref:

  1. 当用在一般的标签上时,主要功能是获取dom节点,进行一些dom的操作。
  2. 当使用在子组件上,可以用来获取子组件的属性。

那么下面我们要实现的就是如何在父组件上使用子组件的方法
目标:我需要实现一个在父组件上控制子组件的弹窗显示,并且通过参数判断显示哪一个内容。

  1. 首先我们很容易想到就是绑定一个点击事件,并且携带一个参数,并且获取子组件的属性,这样在这个父组件中我并没有控制子组件的开关,只是我获取了子组件的方法或者属性,让子组件自己控制开关。
//这里是子组件
<popup  ref="popup"></popup>
//绑定点击事件,并且携带参数
<div class="item-box" @click="showPop('teacher')">
//定义点击事件
showPop(event) {
//获取子组件的属性/方法,这里是获取popup子组件的show方法,并且携带参数
	this.$refs.popup.show(event);
},
  1. 在子组件中就需要定义方法,控制显示弹窗内容,并且将传递过来的参数保存
//控制弹窗的显示隐藏
<div v-show="showPopup">
     <!-- 关闭按钮,点击直接将showPopup定义为false-->
      <div class="closePopup" @click="showPopup = false"></div>
      <!-- 老师数量 -->
      //通过判断type值控制显示哪个弹窗内容
      <teacher v-if="type =='teacher'"></teacher>
      <student v-else-if="type =='student'"></student>
      <turnover v-else></turnover>
</div>

//在data中定义默认值
data(){
     return {
          showPopup: false,
          type: ''
      }
  },
//最后在methods中定义show方法,控制弹窗的显示
methods:{
   show(type){
        this.type = type
        this.showPopup = true;
    }
}

这样就完成了,每个组件只负责我自己需要做的事情,不会影响到其他组件,这样更易于维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值