<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父子组件传值</title> <script src="./vue.js"></script> </head> <body> <div id="root"> <!--加上冒号是让"0","1"成为js表达式,不是字符串--> <counter :count="1" @inc="handleIncrease"></counter> <counter :count="3" @inc="handleIncrease"></counter> <div>{{total}}</div> </div> <script> var counter = { props:['count'], data: function(){ return{ number:this.count } }, template: "<div @click='handleClick'>{{number}}</div>", methods:{ handleClick:function () { this.number = this.number+2; this.$emit('inc',2) //每次点击按钮都是向外触发inc事件,步长为2 } } }; var vm = new Vue({ el: '#root', data:{ total:4 }, //注册子组件 components: { counter: counter }, methods:{ handleIncrease:function (step) { this.total +=2 } } }) </script> </body> </html> <!-- 父组件向子组件传递数据:通过属性的形式向子组件传递数据, 父组件向子组件随意的传递参数,但是子组件不能随意修改父组件传递过来的参数(单项数据流) 解决上述问题吧办法一:在子组件中创建data对象,创建副本,返回自己的number数据,修改自己就可以了 子组件向父组件传递数据:this.$emit -->