vue中非父子组件的传值

vue中非父子组件的传值

/*非父子组件传值
1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例
2.在要广播的地方引入刚才定义的实例
3.通过 VueEvent.$emit("名称",数据)
4.在接收数据的地方通过$on接收广播的数据
VueEvent.$on('名称',function () {

})*/

App.vue根组件

复制代码
<template>
  <div id="app">
    <v-home></v-home>
    <br>
    <hr>
    <v-news></v-news>
  </div>
</template>

<script>
  /*非父子组件传值
    1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例
    2.在要广播的地方引入刚才定义的实例
    3.通过 VueEvent.$emit("名称",数据)
    4.在接收数据的地方通过$on接收广播的数据
         VueEvent.$on('名称',function () {

      })*/
  import Home from './components/Home'
  import News from './components/News'

  export default {
  name: 'App',
  data(){
    return {

    }

  },
  methods:{

  },
  components:{
    "v-home": Home,
    "v-news": News,
  }
}
</script>

<style>

</style>
复制代码

Home组件

复制代码
<template>
<div id="home">
  我是首页组件
  <br>
  <button @click="emitNews()">给News组件广播数据</button>

  <br>
</div>
</template>

<script>
import VueEvent from '../model/VueEvent.js'
    export default {
        name: "Home",
        data(){
          return {
            msg: '我是一个home组件'

          }
        },
      mounted(){
        VueEvent.$on('to-home',function (data) {
          console.log('111111111'+data)
        })
      },
      methods:{
        emitNews(){
          VueEvent.$emit("to-news",this.msg)
        }
      }

    }
</script>

<style scoped>

</style>
复制代码

News.vue

复制代码
<template>
  <div id="news">
    我是新闻组件
    <br>
    <button @click="toHome()">给home组件广播数据</button>
  </div>
</template>

<script>

  import VueEvent from '../model/VueEvent.js'
  export default {
    name: "Header",
    data() {
      return {
        msg:'我是新闻组件'
      }

    },
    mounted(){
      VueEvent.$on('to-news',function (data) {
        console.log(data)
      })
    },
    methods: {
      toHome(){
        VueEvent.$emit('to-home',this.msg)
      }

    },

  }
</script>

<style scoped>

</style>
复制代码

VueEvent.js

1
2
3
4
import Vue from 'vue'
let VueEvent = new Vue()
 
export default VueEvent

  整个目录结构

运行效果:

posted @   前端那点事  阅读(547)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示