單一事件中心管理組件通信

同級組件傳遞可以使用單一事件管理來完成:
注意:this作用域的問題
var Event=new Vue();
Event.emit(,)Event. on(事件名稱,function(data){
//data
}.bind(this));

    var Event=new Vue();
      var A={
         template:`
            <div>
              <span>我是A組件</span> -> {{a}}
              <input type="button" value="把A數據給C" @click="send">
            </div>
            `,
            methods:{
                send(){
                    Event.$emit('a-msg',this.a);
                }
            },
            data(){
                return {
                    a:'我是a數據'
                }
            }
        };
        var B={
            template:`
                <div>
                    <span>我是B組件</span> -> {{a}}
                    <input type="button" value="把B數據給C" @click="send">
                </div>
            `,
            methods:{
                send(){
                    Event.$emit('b-msg',this.a);
                }
            },
            data(){
                return {
                    a:'我是b數據'
                }
            }
        };
        var C={
            template:`
                <div>
                    <h3>我是C組件</h3>
                    <span>接收過來的A的數據爲: {{a}}</span>
                    <br>
                    <span>接收過來的B的數據爲: {{b}}</span>
                </div>
            `,
            data(){
                return {
                    a:'',
                    b:''
                }
            },
            mounted(){
                //var _this=this;
                //接收A組件的數據
                Event.$on('a-msg',function(a){
                    this.a=a;
                }.bind(this));

                //接收B組件的數據
                Event.$on('b-msg',function(a){
                    this.b=a;
                }.bind(this));
            }
        };


        window.onload=function(){
            new Vue({
                el:'#box',
                components:{
                    'com-a':A,
                    'com-b':B,
                    'com-c':C
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <com-a></com-a>
        <com-b></com-b>
        <com-c></com-c>
    </div>
</body>
</html>



















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章