1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| <div id="box"> <h2>这是父组件</h2> <p>a:{{ a }} -- b:{{ b }}</p> <hr> <com-a></com-a> <com-b></com-b> <com-c></com-c> </div> <script> var Event = new Vue(); var A = { template:`<div> {{ msg }} <br /> <input type="button" value='btn' @click='send' /> </div>`, data(){ return {msg:'这是A组件的数据'} }, methods:{ send(){Event.$emit('data-a',this.msg);} } } var B = { template:`<div> {{ msg }} <br /> <input type="button" value='btn' @click='send' /> </div>`, data(){ return {msg:'这是B组件的数据'} }, methods:{ send(){Event.$emit('data-b',this.msg);} } } var C = { template:`<div> {{ msg }} <br /> <p>1{{ a }}</p> <p>2{{ b }}</p> </div>`, data(){ return {msg:'这是C组件的数据',a:'',b:''} }, mounted(){ Event.$on('data-a',function(data){ this.a = data; }.bind(this)); Event.$on('data-b',function(data){ this.b = data; }.bind(this)); } } new Vue({ el:'#box', components:{'com-a':A,'com-b':B,'com-c':C} }) </script>
|