ZhengXingchi / ZhengXingchi.github.io

Apache License 2.0
0 stars 0 forks source link

vue的eventBus #25

Open ZhengXingchi opened 4 years ago

ZhengXingchi commented 4 years ago
var EventBus = new Vue();

Object.defineProperties(Vue.prototype, {
    $bus: {
        get: function () {
            return EventBus
        }
    }
})
ZhengXingchi commented 4 years ago

UpdateMessage.vue

<template>
    <div class="form">
        <div class="form-control">
            <input v-model="message" >
            <button @click="updateMessage()">更新消息</button>
        </div>
    </div>
</template>
<script>
    export default {
        name: "UpdateMessage",
        data() {
            return {
                message: "这是一条消息"
            };
        },
        methods: {
            updateMessage() {
                this.$bus.$emit("updateMessage", this.message);
            }
        },
        beforeDestroy () {
            $this.$bus.$off('updateMessage')
        }
    };
</script>
ZhengXingchi commented 4 years ago

ShowMessage.vue

<template>
    <div class="message">
        <h1>{{ message }}</h1>
    </div>
</template>

<script>
    export default {
        name: "ShowMessage",
        data() {
            return {
                message: "我是一条消息"
            };
        },
        created() {
            var self = this
            this.$bus.$on('updateMessage', function(value) {
                self.updateMessage(value);
            })
        },
        methods: {
            updateMessage(value) {
                this.message = value
            }
        }
    };
</script>