<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>子组件控制父组件</title> <style> .show{ width:100px; height: 100px; text-align: center; font-size: 20px; line-height: 100px; background-color: rgba(0,0,136,0.36); } </style> </head> <body> <div id="app"> vue实例{{state}} <hr> <a1 @custom="custom"></a1> <hr> <b1 :test="state"></b1> </div> <template id="a"> <div> 这是a组件 <button @click="emit">a里的按钮触发事件</button> </div> </template> <template id="b"> <div> <div class="show" v-if="test">这是b组件{{test}}</div> <button>b里的按钮</button> </div> </template> <script src="vue.js"></script> <script> Vue.component('a1',{ template:"#a", data(){ return{ } }, methods:{ emit(){ this.$emit('custom'); } } }) Vue.component('b1',{ template:"#b", data(){ return{ } }, props:['test'], methods:{ } }) new Vue({ el:"#app", data:{ state:true }, methods:{ custom(){ this.state=!this.state; } } }); //两个组件,兄弟关系,其中一个可以控制另外一个的显示与隐藏 </script> </body> </html>
结果截图: