vue基础:非父子组件传值

vue基础:非父子组件传值

本文共用到四个文件:
根组件:App.vue
两个子组件:Home.vue,News.vue
js文件:eveemit.js
文章最后有所有文件

步骤
1.新建一个js文件,引入vue并实例化,最后暴露这个实例
vueemit.js文件

import Vue from 'vue'

var vueevent =new Vue()

export default vueevent;

2.在要广播的地方映入刚才定义的实例。
Home.vue向News.vue传,就要在Home.vue中广播
先引入

import vueevent from '../model/vueemit.js';

3.通过 vueevent.$emit(‘名称’,‘数据’)

methods:{
       emitnews(){
           vueevent.$emit('to-news',this.msg)
       } 
    }

4.在接受的地方,监听广播
vueevent.$on(‘名称’,‘数据’)

mounted(){
        vueevent.$on('to-news',function(data){
            console.log(data);
        })
    }

效果图:
在这里插入图片描述
App.vue

<template>
  <div id="app">
    <v-home/>
    <v-news/>
  </div>
</template>

<script>
import Home from './components/Home.vue';
import News from './components/News.vue';
export default {
  data(){
    return{

    }
  },methods:{

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

<style>

</style>

Home.vue

<template>
    <div id="home">
        我是home组件
        <br>
        <button @click="emitnews()">给news传值</button>
        <br>
    </div>
</template>

<script>
//
import vueevent from '../model/vueemit.js';
export default {
    data(){
        return{
            msg:'我是一个home组件'
        }
    },methods:{
       emitnews(){
           vueevent.$emit('to-news',this.msg)
       } 
    },mounted(){
        vueevent.$on('to-home',function(data){
            console.log(data);
        })
    }
}
</script>

<style>

</style>


News.vue

<template>
    <div id="news">
        我是News组件
        <br>
    <button @click="eventhome()">给home传值</button>
    </div>
</template>

<script>
import vueevent from '../model/vueemit.js';

export default {
    data(){
        return{
            msg:'我是一个新闻组件'
        }
    },
    methods:{
        eventhome(){
            vueevent.$emit('to-home',this.msg)
        }
    },
    mounted(){
        vueevent.$on('to-news',function(data){
            console.log(data);
        })
    }
}
</script>

<style>

</style>


vueevent.js

import Vue from 'vue'

var vueevent =new Vue()

export default vueevent;
发布了51 篇原创文章 · 获赞 45 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/a1424261303/article/details/86590822
今日推荐