const countData = { num : 0 }
const counter = {
props: ['count'],
template: `<div @click="add">{{num}}</div>`,
data: function() {
return countData
},
methods: {
add: function() {
this.num += 2
this.$emit('add', 2)
}
}
}
const vm = new Vue({
el: '#app',
components: {
counter
},
methods: {
addNum: function(step) {
this.total += step
}
}
})
<div id="app">
<counter :count="0" @add="addNum"></counter>
<counter :count="0" @add="addNum"></counter>
</div>
body {
font-size: 24px
}