父组件通过属性向子组件传值,子组件通过事件触发向父组件传值;单项数据流:父组件可以向子组件传递任何数据,子组件不能改变父组件传递过来的数据,可以通过拷贝副本来实现修改
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>父子组件传值</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="root">
<!---加冒号是数字,不加则是字符串--->
<counter :count="3" @inc="handleIncrease"></counter>
<counter :count="2" @inc="handleIncrease"></counter>
<div>{{total}}</div>
</div>
<script>
var counter = {
props: ['count'],
data: function () {
return {
number:this.count
}
},
//template: '<div @click="handleClick">{{count}}</div>',
template: '<div @click="handleClick">{{number}}</div>',
methods: {
handleClick: function () {
//子组件不能随意改变父组件的数据
// this.count++
// this.number++
this.number=this.number+1
this.$emit('inc',1)//
}
}
}
var vm = new Vue({
el: '#root',
data: {
total:5
},
components: {
counter: counter
},
methods: {
handleIncrease: function (step) {
console.log(step)
this.total+=step
}
}
})
</script>
</body>
</html>
count++(子组件不能改变父组件传递的数据)
number++
网友评论