vue非父子组件传值

1.新建VueEvent.js,创建实例

import Vue from 'vue'


var VueEvent =new Vue()


export default VueEvent;

2.在需要传值的组件中引入实例

import VueEvent from "../model/VueEvent.js";

3.通过VueEvent.$emit获取对方的数据

4.在本组件中通过VueEvent.$on进行监听

代码:

第一个组件

<template>
    <div>
            <div>我是第一个组件</div>
            <button @click="Second()">aaa</button>
    </div>
  
</template>
<script>
import VueEvent from "../model/VueEvent.js";
export default {
  data() {
    return {
      msg: "我是aaa"
    }
  },
  methods: {
    Second() {
      VueEvent.$emit("to-bbb", this.msg);
    }
  },
  mounted() {
    VueEvent.$on("to-aaa", function(data) {
      console.log(data);
    });
  }
};
</script>
<style scoped>
</style>

第二个组件

<template>
<div>
    <div>我是第二个组件</div>
  <button @click="First()">bbb</button>
</div>
  
</template>
<script>
import VueEvent from "../model/VueEvent.js";
export default {
  data() {
    return {
      msg: "我是bbb"
    }
  },
  methods: {
    First() {
      VueEvent.$emit("to-aaa", this.msg);
    }
  },
  mounted() {
    VueEvent.$on("to-bbb", function(data) {
      console.log(data);
    });
  }
};
</script>
<style scoped>
</style>

在主页挂载它们就可以显示:

<template>
  <div id="app">
    <!-- <v-home></v-home> -->
    <v-first></v-first>
    <hr />
    <v-second></v-second>
  </div>
</template>

<script>
//引入组件
//import a from './components/father.vue';
import aaa from "./components/aaa.vue";
import bbb from "./components/bbb.vue";
export default {
  name: "App",
  data() {
    return{}
  },
  components: {
    // 'v-home':a , //挂载组件;
    "v-first": aaa,
    "v-second": bbb
  }
};
</script>

<style>
</style>

结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值