Vue学习

非父子组件传值

2018-08-03  本文已影响0人  椰果粒
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>非父子组件传值(bus/总线/发布订阅模式/观察者模式)</title>
    <script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
    <!-- 
        总线模式或者vuex进行非父子组件传值。

     -->
    <div id="app">
        <counter content="fjw" ></counter>
        <counter content="hkx"></counter>
    </div>
    <script>
        Vue.prototype.bus = new Vue();

        var counter = {
            props : {
                content : {
                    type : String,
                    default : "zhangsan"
                }
            },
            data : function(){
                return {
                    selfContent : this.content
                }
            },
            template : '<div @click="handleChildClick">{{selfContent}}</div>',
            methods : {
                handleChildClick : function(){
                    // alert(this.content);
                    this.bus.$emit("change",this.selfContent)
                }
            },
            mounted : function(){
                var _this = this;
                this.bus.$on("change", function(msg){
                    _this.selfContent = msg
                })
            }
        }
        var vm = new Vue({
            el : "#app",
            components : {
                counter : counter
            }
        })
    </script>
</body>
</html>
上一篇 下一篇

猜你喜欢

热点阅读