vue实现父子组件之间的通信以及兄弟组件的通信功能示例
程序员文章站
2022-05-14 15:05:02
本文实例讲述了vue实现父子组件之间的通信以及兄弟组件的通信功能。分享给大家供大家参考,具体如下:
本文实例讲述了vue实现父子组件之间的通信以及兄弟组件的通信功能。分享给大家供大家参考,具体如下:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>www.jb51.net vue父子组件通信、兄弟组件通信</title> <style> *{ margin: 0; padding: 0; list-style: none; } table{ text-align: center; margin:0 auto; } div{ text-align: center; } </style> </head> <body> <div id="app"> <table border="1" cellpadding="0" cellspacing="0"> <tr><td colspan="3">父组件数据</td></tr> <tr><td>name</td><td>{{name}}{{ff()}}</td><td><input type="text" v-model="name"></td></tr> <tr><td>age</td><td>{{age}}{{ff()}}</td><td><input type="text" v-model="age"></td></tr> </table> <v-son :son-name="name" :son-age="age" @sza="gg"></v-son> </div> <template id="son"> <div> <button @click="sonchange">子组件按钮</button> <table border="1" cellpadding="0" cellspacing="0"> <tr><td colspan="3">子组件数据</td></tr> <tr><td>name</td><td>{{sonname}}</td><td><input type="text" v-model="sonname"></td></tr> <tr><td>age</td><td>{{sonage}}</td><td><input type="text" v-model="sonage"></td></tr> </table> <g-son :g-name="sonname" :g-age="sonage"></g-son> </div> </template> <template id="vgson"> <div> <button @click="gchan">孙子组件按钮</button> <table border="1" cellpadding="0" cellspacing="0"> <tr><td colspan="3">孙子组件数据</td></tr> <tr><td>name</td><td>{{gname}}</td><td><input type="text" v-model="gname"></td></tr> <tr><td>age</td><td>{{gage}}</td><td><input type="text" v-model="gage"></td></tr> </table> </div> </template> </body> <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script> <script> var bus=new vue(); const app=new vue({ el:"#app", data:{ name:"keep", age:"28" }, methods:{ gg(val1,val2){ this.name=val1 this.age=val2 }, ff(){ bus.$on("suibian", (val1,val2)=> { this.name=val1; this.age=val2 }) } }, components:{ "vson":{ template:"#son", methods:{ sonchange(){ this.$emit("sza",this.sonname,this.sonage) } }, props:["sonname","sonage"], components:{ "gson":{ template:"#vgson", props:["gname","gage"], methods:{ gchan(){ bus.$emit("suibian",this.gname,this.gage); }, } } }, } } }) </script> </html>
这里使用在线html/css/javascript代码运行工具:http://tools.jb51.net/code/htmljsrun测试上述代码,可得如下运行效果:
希望本文所述对大家vue.js程序设计有所帮助。