💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
非父子组件通讯 // 定义一个空对象,用于触发和监听实例 var Bus = new Vue(); var A = { template: "#a", data(){ return { name:'aaa' } }, methods: { send(){ Bus.$emit('data-a',this.name); } } } var B = { template: "#b", data(){ return { age:33 } }, methods:{ send(){ Bus.$emit('data-b',this.age); } } } var C = { template:'#c', data(){ return{ name:'', age:'' } }, mounted() { // 这种写法娶不到值 // Bus.$on('data-a',function(name){ // this.name = name; // }); // 箭头函数this总是指向函数定义生效时所在的对象 // 注意:箭头函数内部不会产生新的this,即就是当前实例 // 回调函数内部this为上面的空vue实例对象 Bus.$on('data-a',name \=>{ this.name = name; }); Bus.$on('data-b',age \=>{ this.age = age; }); } } var vm = null; window.onload = function(){ vm = new Vue({ el:'#my', data: { }, components:{ //局部组件 'my-a':A, 'my-b':B, 'my-c':C } }); } 组件a:{{name}} 数据发给C 组件b:{{age}} 数据发送给C 组件c:{{name}}{{age}}