前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >14.非父子组件之间传值

14.非父子组件之间传值

作者头像
玩蛇的胖纸
发布2019-10-19 10:27:23
5020
发布2019-10-19 10:27:23
举报
文章被收录于专栏:雪胖纸的玩蛇日常

非父子组件之间传值

1.在src/model目录下新建VueEvent.js文件

代码语言:javascript
复制
import Vue from "vue";

var VueEvent=new Vue()

export default VueEvent;

2.在src/components目录下新建组件Home.vue和News.vue

Home.vue

代码语言:javascript
复制
<template>
    <div>
        <h2>{{msg}}</h2>
        <br>
        <button @click="emitNews()">给News组件广播数据</button>
        <br>
    </div>
</template>
<script>
import VueEvent from "../model/VueEvent.js"
export default {
  name: 'home',  
  data () {
    return {
        msg:'首页组件'
    }
  },
  methods:{
    // 广播数据
    emitNews(){
      VueEvent.$emit('to-news',this.msg)
    }
  },
  components:{
  }
}
</script>
<style lang="scss" scoped>
h2{
    color: red;
}
</style>

 News.vue

代码语言:javascript
复制
<template>
    <div>
        <h2>{{msg}}</h2>
    </div>
</template>
<script>
import VueEvent from "../model/VueEvent.js"
export default {
  name: 'home',  
  data () {
    return {
        msg:'新闻组件'
    }
  },
  methods:{
    
  },
  components:{
  },
  mounted(){
      VueEvent.$on('to-news',function(data){
          console.log(data)
      })
  }
}
</script>
<style lang="scss" scoped>
h2{
    color: red;
}
</style>

3.在App.vue中

代码语言:javascript
复制
<template>
  <div id="app">
    <h2>{{msg}}</h2>
    <v-home></v-home>
    <br>
    <hr>
    <v-news></v-news>
  </div>
</template>
<script>
// 非父子组件之间传值
// 1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例
// 2.在要广播的地方引入刚才暴露的实例
// 3.通过VueEvent.$emit('名称','数据')
// 4.在接收数据的地方,通过VueEvent.$on('名称',function('数据'){})

import Home from './components/Home.vue';
import News from './components/News.vue';

export default {
  name: 'app',
  data () {
    return { 
      msg:'根组件'
    }
  },
  methods:{
  },
  components:{
    'v-home':Home,
    'v-news':News
  }

}
</script>
<style>

</style>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 非父子组件之间传值
    • 1.在src/model目录下新建VueEvent.js文件
      • 2.在src/components目录下新建组件Home.vue和News.vue
        • Home.vue
        •  News.vue
      • 3.在App.vue中
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档