Vue中兄弟组件间传值-(Bus/总线/发布订阅模式/观察者)

Posted nayek

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue中兄弟组件间传值-(Bus/总线/发布订阅模式/观察者)相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="root">
        <child content="Nay"></child>
        <child content="Ek"></child>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script type="text/javascript">

        Vue.prototype.bus = new Vue()

        Vue.component('child', {
            data() {
                return {
                    selfContent : this.content
                }
            },
            props: {
                content: String
            },
            template: '<div @click="handleClick">{{selfContent}}</div>',
            methods: {
                handleClick() {
                    this.bus.$emit('change', this.selfContent)
                }
            },
            mounted() {
                // var that = this
                // this.bus.$on('change', function(msg) {
                // 这里this的指向发生了变更所以需要提前保存this,或者用箭头函数解决
                //     that.content = msg
                // })
                this.bus.$on('change', (msg) => {
                    this.selfContent = msg
                })
            }
        })

        var vm = new Vue({
            el: '#root'
        })

    </script>
</body>
</html>

以上是关于Vue中兄弟组件间传值-(Bus/总线/发布订阅模式/观察者)的主要内容,如果未能解决你的问题,请参考以下文章

Vue非父子组件传值(Bus/总线/发布订阅模式/观察者模式)

vue中组件通信的方式

vue中组件通信的方式

vue中组件通信的方式

事件总线bus解决兄弟组件之间的传值

bus(总线传值-非父子间传值)