码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-11-15 12:34:27      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:订阅   eth   string   head   cti   type   body   asc   tle   

<!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/总线/发布订阅模式/观察者)

标签:订阅   eth   string   head   cti   type   body   asc   tle   

原文地址:https://www.cnblogs.com/nayek/p/11865156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!