非父子组件间的传值

Posted xuyxbiubiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非父子组件间的传值相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>非父子组件间的传值(Bus/总线/发布订阅模式/观察者模式)</title>
    <script src="./vue.js"></script>
</head>
<body>
<div id="root">
    <child content="alex"></child>
    <child content="xu"></child>
</div>
<script>
    Vue.prototype.bus = new Vue(); //把绑定总线

    Vue.component(‘child‘, {
        data: function () {
            return {
                selfContent: this.content
            }
        },
        props: {
            content: String,
        },
        template: ‘<div @click="handleClick">{{selfContent}}</div>‘,
        methods: {
            handleClick: function () {
                this.bus.$emit(‘change‘, this.selfContent)  //向外触发事件
            }
        },
        mounted: function () {
            var this_ = this;
            this.bus.$on(‘change‘, function (msg) {
                this_.selfContent = msg
            }) //监听事件,用到钩子函数mounted
        }
    });
    var vm = new Vue({
        el: ‘#root‘
    })
</script>
</body>
</html>

<!--
非父子组件间传值:
1.Vuex
2.总线机制/Bus/发布订阅模式/观察者模式:
   在Vue的prototype上定义bus属性 Vue.prototype.bus = new Vue();
   在组件的methods定义的方法里使用 this.bus.$emit(‘事件名‘, value); 触发事件并传值。
   在组件的mounted生命周期钩子里使用this.bus.$on(‘事件名‘, function(value){});来监听所定义的bus属性上对应的事件被触发,然后在回调函数里进行操作。

-->

 

以上是关于非父子组件间的传值的主要内容,如果未能解决你的问题,请参考以下文章

父子组件间的传值

React父子组件间的传值

父子间组件间的传值

Vue中组件间传值常用的几种方式

angularjs2中的非父子组件的通信

vue中父子组件主动获取值 父组件向子件间的传值