var eventHub=new Vue()
<div id="app">
<com1></com1>
<com2></com2>
<hr>
<input type="button" value="点击关闭对所有事件的监听" @click="off">
</div>
<template id="tmp1">
<div>
<p>组件1</p>
<p>{{num}}</p>
<input type="button" value="点击修改组件2的值" @click="update1">
</div>
</template>
<template id="tmp2">
<div>
<p>组件2</p>
<p>{{num}}</p>
<input type="button" value="点击修改组件1的值" @click="update2">
</div>
</template>
<script>
var hub = new Vue();
var com1 = {
template: "#tmp1",
data() {
return {
num: 0
}
},
methods: {
update1() {
hub.$emit(‘func2‘, 1);
}
},
mounted() {
hub.$on(‘func1‘, (val) => {
this.num += val;
})
}
};
var com2 = {
template: ‘#tmp2‘,
data() {
return {
num: 0
}
},
methods: {
update2() {
hub.$emit(‘func1‘, 5);
}
},
mounted() {
hub.$on(‘func2‘, (val) => {
this.num += val;
})
}
};
var vm = new Vue({
el: "#app",
data: {},
methods: {
off() {
hub.$off(‘func1‘);
hub.$off(‘func2‘);
}
},
filters: {},
directives: {},
components: {
com1,
com2
},
watch: {},
computed: {}
});
</script>
原文:https://www.cnblogs.com/Syinho/p/13175758.html