Vue 子父组件间的传值

1.父组件给子组件传值:

第一步:在父组件中写个数据,例:tohome

 data () {
    return {
      tohome:"给home组件传值",
    }
  },

第二步:在<v-home>上绑定个属性,例:title

<v-home :title="tohome"></v-home>

第三步:子组件利用props接收父组件的传值

 方法一 props:{
      'title':String,
      'bool':Boolean,
      'getFun':Function
  },
 方法二 props:['title','bool','getFun','parent']

第四步:在子组件上绑定传过来的数据

<p>{{title}}</p>

注:传函数时不能绑定值,可在mounted中执行方法

2.父组件获取子组件的所有方法、属性 ref this.$refs

第一步:给<v-home>命名ref为home-data

第二步:在触发事件时写this.$refs.home-data

 getchildmsg(){
      let elehome=this.$refs.home_data;
      console.log(elehome);
    },

3.子组件获取父组件的整个对象(两种方法) 

方法一:this.parent

第一步:

<v-home :parent="this"></v-home>        //this指父组件

第二步:子组件接收parent

 props:['t itle','bool','getFun','parent']

第三步:在渲染完成后直接输出this.parent

console.log(this.parent);

方法一:直接在子组件中获取

直接在渲染完成后输出this.$parent

console.log(this.$parent);

4.非父组件之间的传值:使用vue里面的全局广播(事件的监听)

例:list组件给home组件传值

第一步:建立一个全局文件Emit.js     ①导入vue ②实例化vue ③暴露出去

import vue from 'vue';
//实例化vue 全局广播
let emit=new vue();
export default emit;

第二步:在发送方导入Emit(广播和接收广播时都要导入),触发广播Emit.$emit

//在哪里广播导入vue全局的对象
import Emit from '../Emit/Emit.js';
 methods:{
    sendhome(){
      Emit.$emit("tohomedata",this.tohome);      //Emit.$emit触发广播("事件",传值)
    }
  },

③在接收方导入,用监听接收广播

  mounted(){
      //接收非父组件之间的广播传值
      Emit.$on("tohomedata",(res)=>{
        //console.log(res);
        this.rehome=res;
      })
  }

④在数据里定义一个变量接收传过来的值(rehome)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值