功能简述:
定义两个组件,通过父子控件传值,来实现其中一个组件button点击时 控制另外一个组件显示与消失
先看错误代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script> <title>slot的应用</title> </head> <body> <div id="app"> <mychild> <!-- <button @click="isShow = !isShow">点我显示或隐藏列表</button> --> <button @click="handleClick">点我显示或隐藏列表</button> </mychild> <!-- 通过父子组件传递,控制显示与不显示 --> <mynvarbar :myShow=isShow> <li v-for="data in list"> {{data}} </li> </mynvarbar> <!-- 直接通过绑定isShow控制显示与不显示 --> <!-- <mynvarbar v-show="isShow"> <li v-for="data in list"> {{data}} </li> </mynvarbar> --> </div> </body> <script> var child = { template:`<div> nvarbar <slot></slot> <div>` } var nvarbar = { template:` <div v-show="myShow"> <ul> <slot></slot> </ul> </div> `, props:['myShow'] } var vm = new Vue({ el:'#app', data:{ list:['www.baidu.com','www.google.com','www.hao123.com'], isShow:false }, components:{ 'mychild':child, 'mynvarbar':nvarbar }, methods:{ handleClick(){ this.isShow = !this.isShow console.log(this.isShow) } } }) </script> </html>
错误的原因就是:
在绑定props时,参数用了myShow的写法,改为myshow 就可以正常显示了