Vue——非父子組件間傳值(Bus/總線/發佈訂閱模式/觀察者模式)

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>非父子組件間傳值(Bus/總線/發佈訂閱模式/觀察者模式)</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>

    <body>
        <div id="root">
            <child content="dell"></child>
            <child content="lee"></child>
        </div>
        <script type="text/javascript">
            Vue.prototype.bus = new Vue()

            Vue.component('child', {
                props: {
                    content: String
                },
                data() {
                    return {
                        selfContent: this.content
                    }
                },
                template: '<div @click="handleClick">{{selfContent}}</div>',
                methods: {
                    handleClick() {
                        this.bus.$emit('change', this.selfContent)
                    }
                },
                mounted() {
                    var _this = this
                    this.bus.$on('change', (msg) => {
                        _this.selfContent = msg
                    })
                }
            })
            var vm = new Vue({
                el: '#root'
            })
        </script>
    </body>

</html>

 

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