美文网首页
15、Vue 兄子组件之间的广播通信

15、Vue 兄子组件之间的广播通信

作者: msqt | 来源:发表于2019-03-07 17:18 被阅读0次
    image.png

    步骤:
    1、创建一个新的js文件。
    2、引入一个空的VUE实例(新的js文件中)。
    import Vue from 'vue'//引入vue实例
    3、实例化引入的空实例(新的js文件中)。
    let VueEvent=new Vue();
    4、将VueEvent暴露出去(新的js文件中)。
    export default VueEvent;


    image.png

    5、再发送端和接收端均引入之前实例化的空Vue实例。


    image.png

    6、痛快地发送与接收:


    image.png

    代码:

    App.vue:


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






    <v-news></v-news>
    <router-view/>
    </div>
    </template>

    <script>
    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>

    app {

    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    color: #2c3e50;
    margin-top: 60px;
    }
    </style>

    VueEvent.js:
    import Vue from 'vue'//引入vue实例
    let VueEvent=new Vue();
    export default VueEvent;

    Home.vue:
    <template>
    <div>
    <h2>我是一个首页组件</h2>
    <button @click="EmitNews()">给News组件广播数据</button>
    </div>
    </template>


    <script>
    import VueEvent from '../model/VueEvent.js';
    export default {
    name: "home",
    data(){
    return {
    msg:'首页组件',
    title:123,
    }
    },
    methods:{
    EmitNews(){//给News组件广播数据
    VueEvent.emit('to_news',this.msg); } }, mounted(){ VueEvent.on('to_home',(data)=>{
    alert(data)
    })
    }
    }
    </script>

    <style scoped lang="scss">
    h2{
    color:red;
    }
    </style>

    News.vue:
    <template>
    <div>
    <h2>我是一个新闻组件</h2>
    <button @click="EmitHome()">给Home组件广播数据</button>
    </div>
    </template>

    <script>
    import VueEvent from '../model/VueEvent.js';
    export default {
    name: "news",
    data(){
    return {
    msg:'新闻组件',
    }
    },
    methods:{
    EmitHome(){
    VueEvent.emit('to_home',this.msg); } }, mounted(){ VueEvent.on('to_news',(data)=>{
    alert(data)
    })
    }
    }

    </script>

    <style scoped>

    </style>

    相关文章

      网友评论

          本文标题:15、Vue 兄子组件之间的广播通信

          本文链接:https://www.haomeiwen.com/subject/ikqhpqtx.html