<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>父子组件传值</title>
</head>
<body>
<div id="app">
<counter count="1" @change="handleChange"></counter><!--父组件通过属性的方式给子组件传递数据-->
<counter :count="2" @change="handleChange"></counter><!--前面加冒号表示内容为js表达式-->
<div>{{total}}</div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var counter = {
props: ['count'],
data: function () {
return {
number: this.count
}
},
template: '<div @click="handleClick">{{number}}</div>',
methods: {
handleClick: function () {
// this.count++; 单向数据流,在子组件中不允许修改父组件传递过来的参数
this.number++;
this.$emit('change',1);
}
}
};
var app = new Vue({
el: '#app',
components: {
counter: counter
},
methods: {
handleChange: function (step) {
this.total += step;
}
},
data: {
total: 3
}
});
</script>
</html>