<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>父子组件间的传值</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="app">
<counter :num="0" @add="getNumTotal"></counter>
<counter :num="0" @add="getNumTotal"></counter>
<div>{{total}}</div>
</div>
<script>
// 父子组件间的传值存在单向数据流的规则,父组件通过属性值的传递向子组件传值,子组件不能
// 直接修改接受的值,
// 因为父组件可能不只向一个子组件传值,子组件不能直接修改父组件的值,
// 需要修改时需要进行拷贝,子组件向父组件传值通过向外出发事件的形式。
var counter = {
props: ['num'],
data: function() {
return {
number: this.num
}
},
template: "<div @click=handleNumClick>{{number}}</div>",
methods: {
handleNumClick: function() {
this.number ++;
this.$emit("add", 1);
}
}
}
var vm = new Vue({
el: "#app",
data: {
total: 0
},
components: {
counter: counter
},
methods: {
getNumTotal: function() {
this.total += 1;
}
}
})
</script>
</body>
</html>