<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <button1></button1> <button2></button2> </div> <script> var bus = new Vue(); Vue.component(‘button1‘, { template: ` <div> <p>button1的值:{{ num }}</p> <button @click="handle">点击使得btn2+1</button> </div> `, data(){ return { num: 0 } }, methods: { handle(){ bus.$emit("btn2", 1); } }, mounted(){ bus.$on("btn1", (val) => { this.num += val; }); } }); Vue.component(‘button2‘, { template: ` <div> <p>button2的值:{{ num }}</p> <button @click="handle">点击使得btn1+2</button> </div> `, data(){ return { num: 0 } }, mounted() { bus.$on("btn2", (val) => { this.num += val; }); }, methods: { handle(){ bus.$emit("btn1", 2); } } }); var vm = new Vue({ el: ‘#app‘, data: {}, methods: {} }); </script> </body> </html>
主要就是先创建一个vue实例(bus),然后其中一个组件在某个时刻触发(emit)事件,在另一个组件中监听(on)该事件的发生。
原文:https://www.cnblogs.com/liualex1109/p/12549538.html