//单一事件管理组件通信 ---同级组件之间的通讯

    <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <com-a></com-a>
        <com-b></com-b>
        <com-c></com-c>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script src="./node_modules/jquery/dist/jquery.js"></script>
    <script>
        //准备一个空的实例对象
        var Event = new Vue();  //这是一个全局的,每个组件都可以访问
         //单一事件管理组件通信
         var A = {
             template : `
                <div>
                    <h2>我是A组件</h2>-----------{{a}}
                    <input type="button" value="把a的数据给c" @click="send">
                </div>
             `,
             data() {
                return {
                    a : '我是a里面的数据'
                }
             },
             methods:{
                 send(){
                     //将事件发射出去,谁愿意接受,谁接受
                    Event.$emit('a-msg',this.a)
                 }
             }
         }
         var B = {
             template : `
                <div>
                    <h2>我是B组件</h2>--------{{a}}
                    <input type="button" value="把b的数据给c">
                </div>
             `,
              data() {
                return {
                    a: '我是b里面的数据'
                }
             }
         }
         var C= {
             template : '<h2>我是C组件----{{c}}</h2>',
             data(){
                 return {
                    c : ''
                 }
             },
             mounted(){
                //  alert('c加载完毕')
                
                Event.$on('a-msg',(a)=>{
                   this.c = a;
                })
             }
         }
         window.onload = function(){
            new Vue({
                el: '#app',
                components: {
                    'com-a' : A,
                    'com-b' : B,
                    'com-c' : C
                }
            })
         }
    </script>
</body>

</html>

---总结一下:l利用一个全局实例对象,以便所有组件都可以方法,在比较简单同级组件之间的通讯时。
利用 //将事件发射出去,谁愿意接受,谁接受
Event.$emit('a-msg',this.a)

在需要数据的地方接受
Event.$on('a-msg',(a)=>{
this.c = a;
})


在es中箭头函数,this指向当前实例

posted @ 2017-07-31 22:41  老年游侠  阅读(127)  评论(0编辑  收藏  举报