vue.js组件之j间的通讯三,通过单一事件来管理组件通讯
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script> </head> <body> <div id="app1"> <com-a></com-a> <com-b></com-b> <com-c></com-c> </div> </body> <script> var A={ template:` <div> <span>我是组件A</span> -->{{a}} <input type ="button" value ="把A数据传给C"> </div> `, data(){ return{ a:'我是a数据' } } }; var B={ template:` <div> <span>我是组件B</span> -->{{b}} <input type ="button" value ="把B数据传给C"> </div> `, data(){ return{ b:'我是b数据' } } }; var C={ template:` <div> <span>我是组件C</span> -->{{c}} <input type ="button" value ="把C数据传给A"> </div> `, data(){ return{ c:'我是c数据' } } }; var app =new Vue({ el:"#app1", data:{ a:'我是父组件的数据' }, /*//子组件,利用props进行数据传递:*/ components:{ 'com-a':A, 'com-b':B, 'com-c':C } }); </script> </html>
案例基础页面:
展示结果:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script> </head> <body> <div id="app1"> <com-a></com-a> <com-b></com-b> <com-c></com-c> </div> </body> <script> /*全局的*/ var vm =new Vue(); var A={ template:` <div> <span>我是组件A</span> -->{{a}} <input type ="button" value ="把A数据传给B" @click="send"> </div> `, data(){ return{ a:'我是a数据' } }, methods:{ send(){ vm.$emit('a-msg',this.a) } } }; var B={ template:` <div> <span>我是组件B</span> -->{{b}} <input type ="button" value ="把B数据传给C"> </div> `, mounted(){ vm.$on('a-msg',function(a){ alert(a); this.b =a; /*将this绑定给当前函数,引用当前函数*/ }.bind(this)); }, data(){ return{ b:'我是b数据' } } }; var C={ template:` <div> <span>我是组件C</span> -->{{c}} <input type ="button" value ="把C数据传给A"> </div> `, data(){ return{ c:'我是c数据' } } }; var app =new Vue({ el:"#app1", data:{ a:'我是父组件的数据' }, /*//子组件,利用props进行数据传递:*/ components:{ 'com-a':A, 'com-b':B, 'com-c':C } }); </script> </html>
之前结果:
传递之后的值:
笔记转移,由于在有道云的笔记转移,写的时间可能有点久,如果有错误的地方,请指正